这是非常基本的.
我记得在某个地方发现了一个警告(我现在找不到),你不应该直接修改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();
}
Run Code Online (Sandbox Code Playgroud)
我不想在这里用多线程或任何东西做任何事情.那应该没事,对吧?如果它是一个装满物体的容器会不会有任何不同,我在其中一个上面调用了一个mutator?
我认为你对更新容器的两件事感到困惑:
std::set更新值是不安全的,因为这将更改不变量(请参阅修改std :: set的元素时会发生什么?)
对于某些容器 - 尤其是std::vector- 如果您的操作(例如push_back)使迭代器无效并且您正在使用在操作之前获得的迭代器,则必须小心.
根据您的情况,我认为您的工作没有问题.
| 归档时间: |
|
| 查看次数: |
175 次 |
| 最近记录: |