提取vector容器中的值

来源:互联网 发布:黑大网络教学平台 编辑:程序博客网 时间:2024/06/05 09:39
 

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

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

 

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

 

例1:

std::vector<int> a(10);
 std::vector<int>::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<int> a(10);
 std::vector<int>::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<int> 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;