如何將std::map
元素push_back到std::vector
?Push_back map into vector
std::vector<std::map<int, int>> v;
// Error
v.push_back(std::make_pair(0, 1))
什麼原因導致此錯誤?
如何將std::map
元素push_back到std::vector
?Push_back map into vector
std::vector<std::map<int, int>> v;
// Error
v.push_back(std::make_pair(0, 1))
什麼原因導致此錯誤?
使用
v.push_back(std::make_pair(0, 1))
是一個問題,因爲一個std::pair
不能被轉換爲std::map
。您可以使用我能想到的以下方法之一來解決問題。
方法1
如果可以使用C++編譯器11,
v.push_back({{0, 1}});
方法2
std::map<int, int> m;
m.insert(std::make_pair(0, 1));
v.push_back(m);
方法3
std::map<int, int> m;
v.push_back(m);
v.back().insert(std::make_pair(0, 1));
您可以將地圖推送到您的數據結構中,std::vector<std::map<int, int>> v
。不是一對即地圖的元素。
因此,請按照以下方法操作。
std::map<int,int> t;
t.insert(std::make_pair(0, 1));
v.push_back(t);
或在C++ 11
v.push_back({{1,2}});
或可替代的情況下,你可以去emplace_back了。
void emplace_work_around(
std::vector<std::map<int, int>>& v,
std::initializer_list<std::pair<const int,int>> item
)
{
v.emplace_back(item);
}
int main()
{
std::vector<std::map<int, int>> v;
emplace_work_around(v,{{1,2}});
}
std::vector<std::map<int, int>> v;
意味着您聲明地圖矢量!
push_back
地圖爲載體,這樣
v.push_back({std::make_pair(0, 1)}); //Needs C++11
OR
std::map<int, int> map1;
map1.insert(std::make_pair(0, 1));
v.push_back(map1);
push_back
「納克一個pair
顯然會導致成編譯錯誤。
'{{}}'做了什麼? – user963241
@ user963241,它可以使用'initialization_list'構造一個'std :: map'。例如。你可以使用'std :: map m {{0,1}};'構造一個'std :: map'。 –