如何将std::map
元素推送回std::vector
?
std::vector<std::map<int, int>> v;
// Error
v.push_back(std::make_pair(0, 1))
导致此错误的原因是什么?
答案 0 :(得分:2)
使用
std::pair
是一个问题,因为std::map
无法转换为v.push_back({{0, 1}});
。您可以使用我能想到的以下方法之一解决问题。
方法1
如果可以使用C ++ 11编译器,
std::map<int, int> m;
m.insert(std::make_pair(0, 1));
v.push_back(m);
方法2
std::map<int, int> m;
v.push_back(m);
v.back().insert(std::make_pair(0, 1));
方法3
RequiredFieldValidator
答案 1 :(得分:1)
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
&#39; pair
显然会导致编译错误。
答案 2 :(得分:0)
您可以将地图推送到数据结构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}});
}