2010-10-30 10 views

उत्तर

14

अपने समारोह घोषणा के बाद से:

void printMatrix(vector< vector<int> > *matrix) 

एक सूचक निर्दिष्ट करता है, यह अनिवार्य रूप से संदर्भ द्वारा पारित कर दिया है। हालांकि, सी ++ में, यह बेहतर संकेत से बचने और एक संदर्भ सीधे पारित करने के लिए है:

void printMatrix(vector< vector<int> > &matrix) 

और

printMatrix(matrix1); // Function call 

यह एक सामान्य समारोह कॉल की तरह दिखता है, लेकिन जैसा कि समारोह में संकेत यह संदर्भ द्वारा पारित हो जाता है घोषणा। यह आपको अनावश्यक सूचक dereferences से बचाता है।

1

ठीक है, सबसे पहले, आप इसे गलत बना रहे हैं।

vector<vector<int>> matrix1(3, vector<int>(3,0)); 

आप मूल्य या संदर्भ द्वारा, या सूचक द्वारा अनुशंसित (अनुशंसित नहीं) कर सकते हैं। यदि आप किसी ऐसे फ़ंक्शन से गुज़र रहे हैं जो सामग्री को परिवर्तित नहीं करता है, तो आप या तो मूल्य, या कॉन्स्ट संदर्भ द्वारा पास कर सकते हैं। मैं कॉन्स संदर्भ पसंद करूंगा, कुछ लोग सोचते हैं कि "सही" तरीका मूल्य से गुज़रना है।

void printMatrix(const vector<vector<int>> & matrix); 

// or 
void printMatrix(vector<vector<int>> matrix); 

// to call 
printMatrix(matrix1); 
+1

, नेस्टेड टेम्पलेट में एक जगह है, अर्थात 'वेक्टर >' भूल अन्यथा कुछ compilers अमान्य सही बदलाव के बारे में शिकायत कितना समय लगेगा। – casablanca

+0

मैं उस प्रभाव के लिए एक नोट के रूप में आपकी टिप्पणी का उपयोग करूंगा। लेकिन क्या कोई प्रासंगिक कंपाइलर हैं जहां यह अभी भी एक मुद्दा है? –

संबंधित मुद्दे