地图键有一个我可以指向的地址吗?

时间:2015-05-03 00:07:54

标签: c++ dictionary vector

我可以将地图键视为指针吗? 我有一个结构,其成员是字符串的矢量,我有一个地图

是否可以使用指向string1的指针填充我的向量?

例如

struct A
{
   vector<string> v;
}
map<string, string> m;
m["hello"] = "test";
m["world"] = "test2";

A test;
for(map<string, string>::iterator it = m.begin(); it != m.end(); it++)
test.v.push_back(it->first)

我可以这样做吗?

2 个答案:

答案 0 :(得分:1)

  

地图键有一个我可以指向的地址吗?

是的,就像它有一个地址的所有对象一样。

  

我可以将地图密钥视为指针吗?

不,这不是指针。但你可以拿它的地址。

  

是否可以使用指向string1的指针填充我的向量?

不,因为它是字符串的向量,而不是指针;所以你可以用地图键的副本填充它(就像你的代码一样),但不是指针。你可以有一个指针向量:

vector<string const *> v;

并用指向地图键的指针填充:

test.v.push_back(&it->first);

如果从地图中删除任何键,请确保之后不要尝试使用该指针。

答案 1 :(得分:0)

在某种程度上,是的。

如果您将密钥存储在某处或作为输入读取,则可以使用它来搜索地图以查看密钥是否存在并获取其值。