gpt4 book ai didi

c++ - vector.back() 和 vector.end() 有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:51:24 26 4
gpt4 key购买 nike

我是一名新的 C++ 学习者,我阅读了一个关于 C++ STL 访问 vector 中最后一个元素的代码块。

为什么第 6、7、8 行的代码需要减去 1 才能等于第 5 行的代码?

1.    std::vector<int> v;
2. v.push_back(999);
3. //fill up the vector
4. //...

5. int j = v.back();
6. int j = v.[size-1]
7. int j = v.at(v.size()-1)
8. int j = *(v.end()-1)

最佳答案

下面是哪个是哪个的说明

v: [ 1 | 2 | 3 | 4 | ... | 999 ]
🡑 🡑 🡑
front() back() end()
🡑
begin()

其中 front()back() 分别返回对第一个和最后一个元素的 (const) 引用,而 end()返回一个迭代器(一种指针)指向 vector 的最后一个元素之后的元素。 begin() 返回指向 vector 第一个元素的迭代器。

这些也在 std::vector 中进行了解释

front access the first element
back access the last element
end/cend returns an iterator to the end
begin/cbegin returns an iterator to the beginning


通常,您从一开始数。这在 C 或 C++ 中是不同的,数组或序列的索引从零开始。这是原因,为什么你必须从大小中减去一个。这表示,为了访问数组的第一个元素,或者在这种情况下是 vector ,你说

v[0]

不是

v[1]

同样,对于最后一个(第 n 个)元素,您不会采用数组( vector )的 sizen,而是少一个,例如

v[size() - 1]

v[n - 1]

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

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