我试图在向量的映射中将字符串向量的值更改为-1,如下面的代码所示,但在显示数据时它保持不变。
map <std::string, vector <string>> amap;
map<std::string, vector<string> >::iterator it=amap.begin();
//it is iterator of map
it=amap.begin();
for(;it != amap.end(); ++it)
{
vector<string> intvec = it->second;
for(int j=i+1;j<intvec.size();j++)
{ str2=intvec[j];
intvec.at(j)="-1";
}
}
我想在地图的特定键的特定向量索引中放置-1。 请帮助:)
答案 0 :(得分:3)
我试图在向量的映射中将字符串向量的值更改为-1,如下面的代码所示,但在显示数据时它保持不变。
那是因为你正在修改副本,而不是地图内的矢量。
该行
vector<string> intvec = it->second;
制作矢量副本,然后修改副本。将该行更改为使用引用类型:
vector<string>& intvec = it->second;
// ^^
答案 1 :(得分:1)
如果您使用的是C ++ 11,则可以使用auto
关键字和基于范围的循环。这将做你想要完成的事情(尽管我不确定你为什么要这样做)。请注意,这会将地图中的每个值设置为“-1”。
std::map <std::string, std::vector<std::string> > aMap;
for (auto& kv : aMap)
{
// aMap has key value pairs kv.first and kv.second
for (auto& str : kv.second)
{
str = "-1";
}
}