std::vector::cbegin
const_iterator cbegin() const noexcept;
返回一个const_iterator指向容器的第一个元素。
A const_iterator is an iterator that points to const content. This iterator can be increased
and decreased (unless it is itself also const), just like the iterator returned by vector::begin, but it cannot be used to modify the contents it points to, even if the vector object is not itself const.
一个const_iterator是一种类似于指向常量的迭代器,他们可以被递增或是递减(除非这个iterator本身是常量才不能这样),这就像和begin()返回的iterator一样,只是cbegin()返回的迭代器不能用于修改该元素而已,甚至vector本身并不是const属性,该方法返回的iterator也是不能用于修改元素的.
If the container is empty, the returned iterator value shall not be dereferenced.
如果容器为空,不应该对该iterator解除引用(即对该iterator取*)
Parameters
noneReturn Value
A const_iterator to the beginning of the sequence.一个指向序列第一个元素的具有const属性的iterator.
Member type const_iterator is a random access iterator type that points to a const element.
该const_iterator属于随机访问迭代器,指向一个具有const属性的元素(该元素本身可能并不是const的)
// vector::cbegin/cend
#include <iostream>
#include <vector>
using namespace std;
int main ()
{
vector<int> myvector = {10,20,30,40,50};
cout << "myvector contains:";
for(auto it = myvector.cbegin(); it != myvector.cend(); ++it)
cout << ' ' << *it;
cout << '\n';
return 0;
}
Output: myvector contains: 10 20 30 40 50
|
Complexity
Constant.Iterator validity
No changes.该方法不会对其他迭代器的有效性造成影响。
Data races
The container is accessed.
该容器应该是可访问的。
该方法不会访问容器里的元素,但是返回的这个iterator可以用来访问元素,并且用他们来访问或者是修改不同的元素都是安全的。(这里似乎有点问题?运用const_cast转换?这里似乎转化不了,什么情况?)
Exception safety
No-throw guarantee: this member function never throws exceptions.The copy construction or assignment of the returned iterator is also guaranteed to never throw
该方法不会抛出异常。
利用复制构造函数或者赋值运算得到该iterator的拷贝也不会抛出异常。