21xrx.com
2024-11-22 02:28:27 Friday
登录
文章检索 我的文章 写文章
C++中vector的迭代技巧
2023-07-04 10:26:48 深夜i     --     --
C++ vector 迭代技巧

C++中的vector是一种常用的容器,它存储了一系列的元素,允许在其中进行快速的随机访问。同时,它也支持迭代操作,即通过迭代器遍历其中的元素。下面介绍一些在vector中使用迭代器的技巧。

1. 使用迭代器进行遍历

可以使用迭代器对vector中的元素进行遍历,这样可以方便地对元素进行操作。以下是一个示例代码:


#include<vector>

#include<iostream>

using namespace std;

int main(){

  vector<int> v3;

  for(auto it=v.begin();it!=v.end();++it){ //遍历

    cout<<*it<<endl; //输出元素

  }

  return 0;

}

其中,v.begin()返回的是指向vector中第一个元素的迭代器,v.end()返回的是指向vector“尾后”元素的迭代器,即最后一个元素的下一个位置。

2. 使用const_iterator

当使用const vector时,我们只需要读取其中的元素,却不允许修改它们。这时候可以使用const_iterator来遍历vector中的元素,如下所示:


#include<vector>

#include<iostream>

using namespace std;

int main(){

  const vector<int> v1;

  for(auto it=v.cbegin();it!=v.cend();++it){

    cout<<*it<<endl;

  }

  return 0;

}

其中,v.cbegin()返回的是指向vector中第一个元素的const_iterator,v.cend()返回的是指向vector“尾后”元素的const_iterator。

3. 使用reverse_iterator

如果需要反向遍历vector中的元素,可以使用reverse_iterator。以下是示例代码:


#include<vector>

#include<iostream>

using namespace std;

int main(){

  vector<int> v3;

  for(auto it=v.rbegin();it!=v.rend();++it){ //反向遍历

    cout<<*it<<endl;

  }

  return 0;

}

其中,v.rbegin()返回的是指向vector中最后一个元素的迭代器,而v.rend()返回的是指向vector“头前”元素的迭代器,即第一个元素的前一个位置。

4. 使用const_reverse_iterator

当使用const vector进行反向遍历时,需要使用const_reverse_iterator来保证不对vector中的元素进行修改,如下所示:


#include<vector>

#include<iostream>

using namespace std;

int main(){

  const vector<int> v5;

  for(auto it=v.crbegin();it!=v.crend();++it){ //const反向遍历

    cout<<*it<<endl;

  }

  return 0;

}

其中,v.crbegin()返回的是指向vector中最后一个元素的const_reverse_iterator,而v.crend()返回的是指向vector“头前”元素的const_reverse_iterator。

总的来说,vector的迭代器提供了很多便利的操作,可以方便地对其中的元素进行遍历和访问。在使用vector时,熟练掌握迭代器的使用方法,可以提高代码的效率和可读性。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复