सी ++ 11 std::map<K,V>
प्रकार एक emplace
कार्य है कॉपी किए बिना ही कई अन्य कंटेनरों है।std :: नक्शा, ठहरना मूल्य
std::map<int,std::string> m;
std::string val {"hello"};
m.emplace(1, val);
इस कोड के रूप में विज्ञापित काम करता है, सीधे std::pair<K,V>
emplacing, लेकिन यह key
और val
जगह लेने की एक प्रति का परिणाम है।
यह मान प्रकार नक्शे में सीधे क़ायम करना करने के साथ ही संभव है? क्या हम कॉल में तर्कों को emplace
पर ले जाने से बेहतर कर सकते हैं?
struct Foo
{
Foo(double d, string s) {}
Foo(const Foo&) = delete;
Foo(Foo&&) = delete;
}
map<int,Foo> m;
m.emplace(1, 2.3, string("hello")); // invalid
@ Cheersandhth.-Alf, मैं दस्तावेजों की एक गुच्छा पढ़ सकते हैं और निष्कर्ष यह है कि यह संभव नहीं है पर आए हैं। हालांकि मैं सबसे अनुभवी सी ++ डेवलपर नहीं हूं, इसलिए उम्मीद है कि मैं गलत हूं, यहां कुछ गुरुओं के पीछे इसे चलाने के लिए चाहता हूं। क्या आप मदद कर सकते हैं? –
ठीक है, http://en.cppreference.com/w/cpp/container/map/emplace –
पढ़ आप एक * अतिरिक्त * प्रतिलिपि मतलब है? 'वैल 'एक लाभा है, इसलिए किसी प्रतिलिपि को कुछ बिंदु पर बनाना होगा। – juanchopanza