作者:手机用户2502863087 | 来源:互联网 | 2022-12-10 12:36
直到几天前,我还以为所有"位置"相关的成员函数都vector
返回了iterator
.我发现最近,虽然insert()
和erase()
功能确实返回iterators
,begin()
并end()
通过定义这样做,但像功能at()
,front()
,back()
不这样做,他们返回一个简单的参考.
虽然引用使生活更容易,因为我不必取消引用iterator
拳头,但对于我来说,某些成员函数返回引用而不是迭代器似乎仍然不一致.如果有的话,C++会尝试通过提供最低限度来最小化这样的不一致性,同时仍然保持编程的简易性.
1> Yuki..:
at
方法是从称为"元素访问"的常用容器方法组,那些返回引用,指针.还有另一组称为"Iterators"的常见容器方法,它们返回迭代器.它是标准库的清晰,简单和众所周知的设计决策.
元素访问
at
:使用边界检查访问指定的元素
operator[]
:访问指定的元素
front
:访问第一个元素
back
:访问最后一个元素
data
直接访问底层数组
迭代器
begin
/ cbegin
将一个迭代器返回到开头
end
/ cend
将一个迭代器返回到结尾
rbegin
/ crbegin
将一个反向迭代器返回到开头
rend
/ crend
返回一个反向迭代器到结尾
在迭代器概念中,迭代器范围内的元素通过std::advance
STD方法访问.这适用于InputIterator
s,BST,列表,向量等,当然具有不同的复杂性.