gpt4 book ai didi

c++ - begin() 和 rend() 有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:09:11 26 4
gpt4 key购买 nike

我在迭代器中有一个关于 begin() 之间的区别的问题和 rend() .

#include <iostream>
#include <array>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
vector<int> v1;
v1 = {9,2,6,4,5};
cout<<*v1.begin();
cout<<*v1.rend();
return 0;
}

cout<<*v1.begin();返回 9

但是 cout<<*v1.rend();返回一个不是 9 的数字

为什么会有如此不同的结果?

最佳答案

在 C++ 中,范围由一对迭代器标记,该迭代器标记范围的开始和范围结束后的位置。对于容器,begin()end() 成员函数为您提供了一对指向首尾位置的迭代器。从 end() 读取是不安全的,因为它不指向实际元素。

类似地,rbegin()rend() 成员函数返回反向迭代器,分别指向最后一个位置和第一个位置之前的位置。出于同样的原因,取消引用 end() 迭代器(它超过了范围的末尾)是不安全的,你不应该取消引用 rend() 迭代器,因为它不指向容器内的元素。

关于c++ - begin() 和 rend() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56612556/

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