এমনকি যদি এটি বিদ্যমান থাকে তবে একটি std::map
বর্ধিত প্রাথমিকের তালিকাটি দেখতে কেমন হবে?
আমি জিসিসি ৪.৪ দিয়ে যা ভাবতে পারি তার সবগুলি সমন্বয় চেষ্টা করেছি ... তবে সংকলিত কিছুই পাই নি
উত্তর:
এটি বিদ্যমান এবং ভাল কাজ করে:
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() );
এটি সি ++ 11map( std::initializer_list<value_type> init, const Allocator& );
থেকে উপলব্ধ এবং কেবল সি ++ 14 এর পরে উপলব্ধ । তথ্যসূত্র:
আমি দ্বিগুণের উত্তরে যুক্ত করতে চাই যে তালিকা সূচনাটি নেস্টেড মানচিত্রের জন্যও কাজ করে। উদাহরণস্বরূপ, মানগুলির 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 => এ-> 1 বি-> 2
3 => সি-> 3 ডি-> 4 ই-> 5