使用c ++中的映射指针将值插入映射

时间:2018-06-12 19:15:29

标签: c++ pointers

我有一个地图指针,我正试图像这样添加值。

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;

我该怎么做?

2 个答案:

答案 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/