gpt4 book ai didi

c++ - 迭代器不能被另一个相同大小的 vector 重用吗?

转载 作者:行者123 更新时间:2023-11-28 07:03:08 25 4
gpt4 key购买 nike

vector< vector<int> >::iterator row;
vector<int>::iterator col;
vector<int>::iterator col2;



for (row = vec.begin(); row != vec.end(); row++) {

col2 = row->begin(); //this needs to be row2 and row2 must be assigned with vec2.begin();

for (col = row->begin(); col != row->end(); col++) {
vec[col] = 23; //doesn't work because col is a pointer
*col = 23;
*col2 = 23; //overrides value pointed by *col


col2++;
}

我很困惑,因为当我打印迭代器时,我得到了索引值,所以我假设 << 运算符被重载以提供索引值而不是迭代器指向的地址。

最佳答案

对您的问题的简短回答是否定的,您不能安全地在另一个容器的一个实例中重用迭代器。如果将迭代器视为指针,这一点就更清楚了。

int* pI = &some_int;

如果我取消引用 pI,我希望得到 some_int 的值。它不能同时指向 some_other_int

如果没有一些具体有用的代码,我无法提出替代解决方案。但是,由于 std::vector 支持随机访问,如果您想访问相同大小的不同 vector 的 2 个元素,您可以使用索引代替:

std::vector<int> vec1(100, 1); // 100 elements initialized to 1
std::vector<int> vec2(100, 2); // 100 elements initialized to 2
std::vector<int> vec3(100);
for (std::size_t i = 0; i < vec1.size(); ++i) // we already know vec1, vec2, and vec3 are all the same size
{
vec3[i] = vec1[i] + vec2[i];
}

关于c++ - 迭代器不能被另一个相同大小的 vector 重用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22138247/

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