begin()       返回第一个元素的迭代器 (iterator)

end()          返回最末元素的迭代器 (iterator) (译注:实指向最末元素的下一个位置)

注:这两个就相当于指针,可以把他们返回的值赋给一个声明的 iterator (迭代器),这个迭代器可以 ++  – 的操作,还可以直接加一个数字

例1:

std::vector a(10);
 std::vector::iterator it;
 int i = 0;
 for (it = a.begin(); it != a.end(); it++)
 {
  *it = i;
  i++;
 }

cout<<*(a.begin()+4)<<endl; // 输出的为:4

cout<<*(a.end()-2)<<endl; // 输出的为:8

注:a 中的值从第0为到第10维分别是: 0,1,2,3,4,5,6,7,8,9;

rbegin()      返回Vector尾部的逆迭代器 (reverse_iterator)
rend()         返回Vector起始的逆迭代器 (reverse_iterator) (译注:实指向第一个元素的前一个位置) ,rend()-1指向的是第一个元素

注:这两个就相当于指针,可以把他们返回的值赋给一个声明的 reverse_iterator(逆迭代器),这个迭代器可以 ++  – 的操作,还可以直接加一个数字,但如果当前指向的是第7维,如果加2就指向的是第5维,如果++就是第6维,如果减2就是第9维

例2:

std::vector a(10);
 std::vector::reverse_iterator it;
 int i = 0;
 for (it = a.rbegin(); it != a.rend(); it++)
 {
  *it = i;
  i++;
 }

cout<<*(a.rend()-1)<<endl; // 输出的为:9

cout<<*(a.rbegin()+4)<<endl; // 输出的为:4

注:a 中的值从第0为到第10维分别是: 9,8,7,6,5,4,3,2,1,0;

front()        返回第一个元素 (相当于 *begin() )

at()            返回指定位置的元素 (参数添几相当于提取第几维的元素的值,而不是指针)
back()        返回最末一个元素 (相当于 *(end()-1) )

注:这三个函数取得的都是值而不是指针

例3:
 std::vector a(10);
 for (int i = 0; i<a.size(); i++)
 {
   a.at(i) = i; // 相当于a[i] = i;
 }
 cout<<a.front()<<endl; // 输出的为:0
 cout<<a.back()<<endl; // 输出的为:9

注:a 中的值从第0为到第10维分别是: 0,1,2,3,4,5,6,7,8,9;

作者:qingqinglanghua
来源:CSDN
原文:https://blog.csdn.net/qingqinglanghua/article/details/5025919
版权声明:本文为博主原创文章,转载请附上博文链接!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐