gpt4 book ai didi

c++ - 迭代器的动态大小检查?

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

vector<int> solution;
vector<int>::iterator col;
vector<int>::iterator row;
vector<int>::iterator sum;


...

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

for (col = row->begin(); col != row->end(); ++col)
{
if(sum == (solution.end())) //value for solution.end() doesn't change, while vector keeps growing
{
solution.push_back(*col);
}

*sum = (*sum + *col); //leads to segfault

++sum;
}
}

我想要一个允许我检查增长 vector 的条件,但是迭代器是如何在 C++ 中实现的,因为它不允许我这样做。那我该用什么?

最佳答案

push_back 有可能使 vector 中的所有迭代器失效;这解释了为什么在下一行代码中取消引用 *sum 时会出现段错误。

您可以重新计算 sum,方法是取 begin() 的差异并将其添加到 之后的新 begin() >push_back(),或者您可以使用索引代替迭代器。

size_t offset = sum - solution.begin();
solution.push_back(*col);
sum = solution.begin() + offset;

关于c++ - 迭代器的动态大小检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22139451/

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