有关静态矢量和后推的问题......
这个想法是一个向量存储一对字符串和其他向量...
[0] foo1:bar1,bar2 ...... [1] foo2:bar3,bar4 ......
我在h文件中声明了这个向量:
class thing
{
public:
...
static std::vector<std::pair<std::string, std::vector<std::string>>> things;
...
}
在cpp文件中:
vector<pair<string,vector<string>>> thing::things;
我可以用简单的方法创建向量的第一个条目:
typedef pair<string,vector<string>> p;
p P;
P.first = foo;
P.second.push_back(bar1);
但是,当我尝试用:
更新内部对矢量时typedef pair<string,vector<string>> p;
BOOST_FOREACH(p P, thing::things)
{
if(P.first==foo)
{
P.second.push_back(bar2);
}
}
事物::事物导致它没有用第二个值更新......
任何帮助?
谢谢!
答案 0 :(得分:1)
如果要修改元素,则需要引用:
BOOST_FOREACH(p & P, thing::things)
{
if(P.first==foo)
{
P.second.push_back(bar2);
}
}
就像你使用它一样,它会创建每个元素的副本。