gpt4 book ai didi

c++ - 迭代器可以在 C++ 中的 vector 之间共享吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:16 24 4
gpt4 key购买 nike

在 c++ 中,如果我有两个数组 a[10] 和 b[10],我可以引入一个索引 i 可以用于两个数组指向第 (i+1) 个元素,a[i] 和 b[i]。迭代器是否也可以共享,或者我需要做类似的事情:

vector<int> a;
vector<int> b; //assume both are initiated and same
vector<int>::iterator i; //assume program know i=10 and *i=20 in vector a
vector<int>::iterator j = b.begin();

for(;j != b.end();j++){
if(*j == *i){
break;
}
}

然后我得到迭代器 j,它指向相同的位置但在 vector b 中?我可以简单地知道 i 在 a 中的位置然后 j=b.begin()+pos(i)

最佳答案

标准 C++ 库中的迭代器是根据指针而不是索引建模的。就像指针不能在多个数组之间共享一样,迭代器也不能在 vector 或其他集合之间共享。

如果需要并行迭代多个 vector ,可以使用索引而不是迭代器。如果需要查找迭代器的位置,可以使用std::distance像这样:

std::distance(b.begin(), my_iter)

如果你需要移动一个迭代器i在 vector 中 a到与迭代器相同的位置 j在 vector 中 b ,你可以这样做:

auto i = a.begin();
// j is an iterator in vector "b"
advance(i, distance(b.begin(), j));

关于c++ - 迭代器可以在 C++ 中的 vector 之间共享吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17433218/

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