我有一个地图指针,我正试图像这样添加值。
map<int, vector<int>> *m;
vector<int> v;
v.push_back(100);
(*m)[0] = v
上面的代码给我一个分段错误。我也试过了。
map<int, vector<int>> *m;
map<int, vector<int>> m1 = *m;
vector<int> v;
v.push_back(100);
m1[0] = v;
我该怎么做?
答案 0 :(得分:1)
在这两个示例中,m
是未初始化的指针,指向未指向有效map
对象的指针。这就是为什么当m
被取消引用以执行某些操作时代码崩溃的原因。
请改为尝试:
map<int, vector<int>> m1;
map<int, vector<int>> *m = &m1;
vector<int> v;
v.push_back(100);
(*m)[0] = v;
答案 1 :(得分:0)
这里似乎有几个问题。
首先你不知道如何使用指针,所以我建议你做一些阅读。
其次,您不必担心指针,因为矢量或地图将为您管理内存。
如果你认为一个向量存储一个值序列,一个映射提供一个查找键,这使你可以访问该值,那么如果你解释你想要实现的目标,它可能会更好。
您是在尝试解决问题,还是只是玩指针,矢量和地图?
C ++培训的来源也很多,但是如果您使用的是Visual Studio,那么您可以从这里获取工作培训C ++代码并在本地计算机上播放。 https://gitlab.com/cppocl/training/