मुझे सी ++ 11 में वैक्टर परिभाषित करने के नए शॉर्टकट तरीके के बारे में कोई प्रश्न है। मैं निम्नलिखित वर्गसी ++ 11 फ़ंक्शन कॉल में 11 वेक्टर प्रारंभिकता
struct Tester{
vector< vector<int> > data;
Tester(){
data = vector< vector<int> >();
}
void add(vector<int> datum){
data.push_back(datum);
}
};
तो है मान लीजिए, निम्न कार्य करता अपेक्षा के अनुरूप:
int main(){
Tester test = Tester();
vector<int> datum = vector<int>{1,2,3};
test.add(datum);
}
लेकिन यह नहीं करता है:
int main(){
Tester test = Tester();
test.add(vector<int>{1,2,3});
}
किसी ने मुझे अंतर की व्याख्या कर सकते हैं? मैं दूसरे मुख्य() में शॉर्टकट का प्रयास कैसे कर सकता हूं?
सी ++ 11 आप टेम्पलेट कोष्ठक के बीच कोई अंतराल छोड़ने के लिए अनुमति देता है: 'वेक्टर>' कानूनी है। –
zneak
आपको अपने दूसरे प्रयास के साथ प्राप्त त्रुटि भी पोस्ट करनी चाहिए। मेरे सिर से और बिना सी ++ 11 कंपाइलर के, मुझे लगता है कि यह केवल प्रारंभकर्ता सूची ('test.add ({1,2,3})') के साथ काम करेगा या ब्रांड्स के साथ इसे अर्जित करेगा (' test.add (वेक्टर ({1,2,3})) ')। –
zneak
'डेटा = वेक्टर < vector>(); 'पूरी तरह से अनिवार्य है और सी ++ रचनाकारों और प्रारंभिकरण में मौलिक गलतफहमी को इंगित कर सकता है। –
PlasmaHH