gpt4 book ai didi

c++ - 在修改 的大小时迭代 std::vector 安全吗?

转载 作者:搜寻专家 更新时间:2023-10-31 00:11:47 26 4
gpt4 key购买 nike

假设我有一个其他容器类型的 vector 。在迭代 vector 时,我更改了容器的大小。鉴于 vector 试图在系统内存中保持连续,指针算法会在这样的循环中失败吗?例如,

#include <stdlib.h>
#include <vector>

using namespace std;

int main(){
vector<vector<double> > vec_vec(4);
for (auto i=vec_vec.begin(); i!=vec_vec.end(); ++i){
for (double j=0; j<100; j+=1.0){
i->push_back(j)
};
};

return 0;
}

到目前为止,我在使用这样的代码时没有遇到任何问题,但现在我想知道我是否只是走运。这样安全吗?它取决于载体内部使用的容器类型吗?

最佳答案

完全没问题,您没有更改外部 vector 。但是,不能保证所有 vector 在内存中都是连续的。每个个体内心都会,但不要指望它们在内存中一个接一个地排列。

关于c++ - 在修改 <some_container> 的大小时迭代 std::vector<some_container> 安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32701643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com