这是非常基本的。

我记得在某处(我现在找不到)发出警告,警告您不要直接修改STL容器的内容,因为它可能会对容器的内部记录保持造成严重破坏。 因此,接下来,每当您要修改元素时,都应使用boost的ptr_containers之类的东西。

这基本上就是我想要做的:

int main (int argc, char *argv[]) {
    std::vector<int> jambone;

    jambone.push_back(2);
    jambone.front() = 4;
    std::cout<< jambone.front();
}

我不是想在这里使用多线程或其他任何方法。 那应该没事吧? 如果它是一个装有对象的容器,并且我在其中一个对象上调用了一个mutator,会有所不同吗?

===============>>#1 票数:6 已采纳

我认为您在更新容器时混淆了两件事:

  1. std::set更新值并不安全,因为这会改变不变量(请参见修改std :: set的元素时会发生什么?

  2. 对于某些容器,尤其是std::vector ,如果操作(例如push_back )使迭代器无效并且使用的是在操作之前获得的迭代器,则必须小心。

根据您的情况,我认为您的工作没有问题。

  ask by Obliterax Scourge of Nations translate from so

未解决问题?本站智能推荐: