C++如何将vector插入到map<int, vector<int>>容器中
代码错误修正方案
你的代码存在两处语法/逻辑错误:
- 内层循环增量错误:控制内层循环的变量是
j,但你写了i++,会导致j始终为0触发死循环,同时外层循环的i值也会被异常篡改。 - map插入方法调用错误:
std::map没有push_back成员方法,你构造好的temp对象就是需要存入map的value,直接作为键值对的第二个参数传入即可。
修正后可运行代码
#include <map> #include <vector> int main(){ std::map<int, std::vector<int>> m; for(int i = 0; i < 10; i++){ std::vector<int> temp; // 修正增量为j++ for(int j = 0; j < 5; j++){ temp.push_back(j); } // 修正插入逻辑,直接传入temp m.insert({i, temp}); } return 0; }
如果你使用C++11及以上版本,还可以省略内层循环,直接用初始化列表构造vector,代码更简洁:
#include <map> #include <vector> int main(){ std::map<int, std::vector<int>> m; for(int i = 0; i < 10; i++){ m.insert({i, {0,1,2,3,4}}); } return 0; }
内容的提问来源于stack exchange,提问作者him.himanshu
相关产品推荐
相关产品推荐

