这个很基本。
我记得在某处发现了一个警告(我现在找不到它),因为它不应该直接修改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?
答案 0 :(得分:6)
我认为你对更新容器的两件事感到困惑:
std::set
更新值不安全,因为这会更改不变量(请参阅what happens when you modify an element of an std::set?)
对于某些容器 - 尤其是std::vector
- 如果您的操作(例如push_back
)使迭代器无效并且您正在使用在操作之前获得的迭代器,则必须小心。
根据您的情况,我认为您的工作没有问题。