【问题标题】:Pushback to vector inside static vector推回静态向量内的向量
【发布时间】:2014-03-12 08:52:04
【问题描述】:

关于静态向量和后推的问题...

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

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

未使用第二个值更新的 thing::things 向量...

有什么帮助吗?

谢谢!

【问题讨论】:

  • 如果你使用标准循环也会发生同样的情况吗?
  • 嗨,奇怪,标准循环工作正常...但我仍然想知道为什么...朋友胡安...

标签: c++ vector static


【解决方案1】:

如果你想修改元素,那么你需要一个参考:

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

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

【讨论】:

  • 你能相信我为此损失了 1 小时吗?咖啡还不够...谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-19
  • 1970-01-01
  • 2016-08-15
  • 2015-09-23
  • 2021-11-13
  • 1970-01-01
相关资源
最近更新 更多