gpt4 book ai didi

c++ - 为什么迭代器从其 end() 获得的结果很奇怪?

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

我在做一些“c++ prime”练习时遇到问题,迭代器 end() 有问题。所以我写了一个测试文件,它的代码如下:

int main (void) 
{
vector<int> v(10);
auto c = v.end();
return 0;
}

让我意外的是c的值不是10,而是一个奇怪的数字。这是我的调试结果:

enter image description here

这个问题的原因是什么?是编译器的原因吗?我使用“g++ -g -Wall -std=c++14”来编译。

最佳答案

iterator::end 指向容器中最后一个元素之后的位置。因此,在您的情况下,它指向的地址是之后存储您的vector 第 10 个元素的地址。

此外,看起来您正在尝试访问迭代器的值,这是它指向的内存中的地址。您需要对其进行取消引用,以获取它指向的(不适用于iterator::end)。

关于c++ - 为什么迭代器从其 end() 获得的结果很奇怪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33958768/

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