यदि यह मौजूद है, तो एक std::map
विस्तारित इनिशलाइज़र सूची क्या दिखेगी?
मैंने कुछ संयोजनों की कोशिश की है ... ठीक है, सब कुछ मैं जीसीसी 4.4 के साथ सोच सकता था, लेकिन ऐसा कुछ भी नहीं मिला जो संकलित हो।
जवाबों:
यह मौजूद है और अच्छी तरह से काम करता है:
std::map <int, std::string> x
{
std::make_pair (42, "foo"),
std::make_pair (3, "bar")
};
याद रखें कि मानचित्र का मूल्य प्रकार है pair <const key_type, mapped_type>
, इसलिए आपको मूल रूप से समान या परिवर्तनीय प्रकारों के साथ जोड़े की सूची की आवश्यकता है।
एसटी :: जोड़ी के साथ एकीकृत इनिशियलाइज़ेशन के साथ, कोड और भी सरल हो जाता है
std::map <int, std::string> x {
{ 42, "foo" },
{ 3, "bar" }
};
map( std::initializer_list<value_type> init, const Compare& comp = Compare(), const Allocator& alloc = Allocator() );
के बाद से उपलब्ध है सी ++ 11 , और map( std::initializer_list<value_type> init, const Allocator& );
के बाद से ही उपलब्ध है सी ++ 14 । संदर्भ: std :: map
मुझे लगता है कि doublep के जवाब में जोड़ना चाहते हैं सूची आरंभीकरण भी नेस्टेड नक्शे के लिए काम करता है । उदाहरण के लिए, यदि आप एक है std::map
के साथ std::map
मूल्यों, तो आप यह निम्नलिखित तरीके से (बस सुनिश्चित करें कि आप घुंघराले ब्रेसिज़ में डूब नहीं है) में प्रारंभ कर सकते हैं:
int main() {
std::map<int, std::map<std::string, double>> myMap{
{1, {{"a", 1.0}, {"b", 2.0}}}, {3, {{"c", 3.0}, {"d", 4.0}, {"e", 5.0}}}
};
// C++17: Range-based for loops with structured binding.
for (auto const &[k1, v1] : myMap) {
std::cout << k1 << " =>";
for (auto const &[k2, v2] : v1)
std::cout << " " << k2 << "->" << v2;
std::cout << std::endl;
}
return 0;
}
आउटपुट:
1 => a-> 1 b-> 2
3 => c-> 3 d-> 4 e-> 5