gpt4 book ai didi

C++ vector 迭代器错误

转载 作者:太空宇宙 更新时间:2023-11-04 13:31:51 24 4
gpt4 key购买 nike

我已经学习 C++ 一周了,这里是我写的一些代码。我收到一条错误消息,指出 vector 迭代器超出范围。当knZeros的值都是5,possibleGrid[i][j].size()=4时,就会发生错误。

int nZeros = 0;
for (int k = 0; k < Size; k++)
{

if (possibleGrid[i][j][k - nZeros] == 0)
{
nZeros++;
possibleGrid[i][j].erase(possibleGrid[i][j].begin() + k - nZeros); //something here is wrong!!
}

}

最佳答案

您将 5 添加到只有 4 个有效元素的迭代器。这里的问题是评估的顺序。当编译器看到 possibleGrid[i][j].begin() + k - nZeros 时,它会将其解释为 (possibleGrid[i][j].begin() + k) - nZeros;因此,当 knZeros 都是 5 时,它首先将 5 加到迭代器(使其无效),然后从现在无效的迭代器中减去 5。

要修复错误,只需在 (k - nZeros) 周围添加括号即可。

关于C++ vector 迭代器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31106099/

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