推回到静态矢量内的矢量

时间:2014-03-12 08:52:05

标签: c++ vector static

有关静态矢量和后推的问题......

这个想法是一个向量存储一对字符串和其他向量...

[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);
    }
}

事物::事物导致它没有用第二个值更新......

任何帮助?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果要修改元素,则需要引用:

BOOST_FOREACH(p & P, thing::things)
{
    if(P.first==foo)
    {
        P.second.push_back(bar2);
    }
}

就像你使用它一样,它会创建每个元素的副本。