是否可以推回地图中矢量的值? C ++

时间:2016-03-19 04:51:43

标签: c++ pointers dictionary vector unordered-map

所以我要说我声明了键my_type 的地图(其中“my_type”是一个可以是多种不同类型的类,允许向量是异构的 - 让我们假设这是为了区分向量)映射到指向my_type 向量的指针向量,如下所示:

unordered_map<my_type, vector<vector<my_type>*>> my_map;

我有以下向量:

vector<my_type> vec1 = {"Adam", 1}
vector<my_type> vec2 = {"Kevin", 2}
vector<my_type> vec3 = {"Kevin", 3}
vector<my_type> vec4 = {"Kevin", 4}
vector<my_type> vec5 = {"Richard", 5}
vector<my_type> vec6 = {"Sam", 6}

现在假设我想将这些向量中的每一个作为值添加到unordered_map中,索引0处的字符串名称作为每个向量的键。我的目标是能够在unordered_map中存储可能具有相同键的多个向量(与多图的工作方式非常相似,除非不使用多图)。

我想使得每个向量(vec1,vec2,... vec6)的指针被推回到映射中与给定键对应的向量中。如果一个键指向一个已经包含指向某个值的指针的向量,我想将一个指向新值的指针推送到该向量的后面,所以现在它可以有两个,两者基本上共享相同的键。然后,我希望通过向量索引来访问一个映射中的相同键的重复值。

基本上,键“Kevin”将指向一个指针向量,其中指针位于索引0 - &gt; vec2,索引1处的指针 - &gt; vec3和索引2处的指针 - &gt; vec4。

是否可以这样做,如果是这样,怎么做?一些示例语法将被欣赏。另外我知道这可以通过多图来完成,但是我试图在没有一个的情况下这样做有几个原因,所以我只是问你不建议一个。谢谢,我希望我的问题有道理。

1 个答案:

答案 0 :(得分:0)

  

我想使得每个向量(vec1,vec2,... vec6)的指针被推回到映射中与给定键对应的向量中。

my_map["Adam"].push_back(&vec1);
my_map["Kevin"].push_back(&vec2);
my_map["Kevin"].push_back(&vec3);
my_map["Kevin"].push_back(&vec4);
...etc...

那就是说,Alf是对的 - 通常最好避免使用指针并让my_map成为一个合适的独立变量,拥有自己的数据并在my_map超出范围时解除分配,{ {1}} - 然后编辑new - d等..