मैं एक समारोह है,सी ++ वेक्टर <int> के लिए डिफ़ॉल्ट तर्क?
void test(vector<int>& vec);
मैं कैसे vec के लिए डिफ़ॉल्ट तर्क सेट कर सकते हैं? "करने के लिए 'std :: वेक्टर < _Ty> &' 'std :: वेक्टर < _Ty>' से रूपांतरण गैरमानक विस्तार के लिए इस्तेमाल किया: 'डिफ़ॉल्ट तर्क'"
मैंvoid test(vector<int>& vec = vector<int>());
की कोशिश की है लेकिन वहाँ एक चेतावनी है
क्या ऐसा करने का कोई बेहतर तरीका है?
void test(const vector<int>& vec = vector<int>());
C++
temporaries गैर स्थिरांक संदर्भ बाध्य होने के लिए अनुमति नहीं देता: इसके बजाय
void test() {
vector<int> dummy;
test(dummy);
}
सादर की, Voteforpedro
+1 लेकिन मुझे लगता है कि यह ध्यान दिया जाना चाहिए कि 'परीक्षण' आमतौर पर थ्रेड-सुरक्षित नहीं होगा, यह 'DEFAULT_VECTOR' को संशोधित करना था। यह कठिन हो सकता है, लेकिन मैं दृढ़ता से ऐसी आवश्यकताओं के लिए दो कार्यों को लिखने की सिफारिश करता हूं (कोई अन्य का पुन: उपयोग कर सकता है): शून्य परीक्षण() {वेक्टर temp; परीक्षण (अस्थायी); } –
stinky472
@ stinky472: धन्यवाद, मेरा जवाब अपडेट किया गया। – ereOn
एक साइड नोट के रूप में, अस्थायी के संदर्भ प्राप्त करने का एक हैकी तरीका है यदि आप बाद में कुछ विधि का उपयोग कर सकते हैं जो स्वयं के लिए ऐसा संदर्भ देता है ... उदा। 'ऑपरेटर ='। तो, 'शून्य परीक्षण (वेक्टर और वीसी = वेक्टर ()। ऑपरेटर = (वेक्टर ()); 'काम करना चाहिए (अस्थायी जीवनकाल यहां अप्रभावित है और कॉल को संभालने के लिए पर्याप्त रहेगा)। लेकिन कृपया यह मत करो :) –