मैं एक std::vector<std::vector<double>>
है और यह के अंत में कुछ तत्वों को जोड़ने के लिए करना चाहते हैं तो यह मेरे परीक्षण था:क़ायम करना
std::vector<std::vector<double> > vec;
vec.emplace_back({0,0});
लेकिन इस संकलन नहीं होती, जबकि निम्न करेगा:
std::vector<double> vector({0,0});
Emplace_back इस स्थिति में तत्व का निर्माण क्यों नहीं कर सकता? या मैं गलत क्या कर रहा हूँ?
आपकी मदद के लिए धन्यवाद।
धन्यवाद, लेकिन मैं इस के लिए एक और सवाल है: क्यों यह दूसरा उदाहरण के लिए काम करता है? चूंकि कंपाइलर के प्रकार के बारे में समान जानकारी है (emplace_back std :: vector के निर्माता के लिए तर्क प्राप्त करने की अपेक्षा करता है और दूसरा उदाहरण भी है) –
m47h
क्योंकि दूसरे उदाहरण में आप वेक्टर के निर्माता को कॉल करते हैं, जो प्रारंभकर्ता सूची को संभाल सकता है सीधे। – marli
तो प्रभावी ढंग से आप जगह नहीं बना रहे हैं, बल्कि वेक्टर बनाने के बजाय, पहले से ही निर्मित तत्व को दबा रहे हैं। –