子嘉的博客 子嘉的博客
首页
bic-bic
技术
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

高子嘉

没有比脚更长的路,没有比人更高的山
首页
bic-bic
技术
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • new
  • vector_init
  • vector_traverse
  • macro_magic
  • io
  • gdb
  • cplusplus
子嘉
2022-06-05

vector_traverse

注意,cbegin(), cend(), crbegin(), crend() 方法是 c++11 方法 在遍历过程中删除数据需要移动迭代器,这里要注意,erase 参数是正像迭代器,所以不可以使用 reverse_iterator iterator erase (const_iterator position); iterator erase (const_iterator first, const_iterator last);

删除指定元素示例:

for(vector<int>::iterator it = v.begin(); it != v.end();)
{
    if(*it == 3)
        v.erase(it);
    else
        ++it;
}
1
2
3
4
5
6
7

以下是遍历 vector 的几种方法

  1. 使用 c 风格的遍历
for(int i = 0; i < v.size(); ++i)
    cout<< v[i];
1
2
  1. 使用迭代器遍历
for(vector<T>::iterator it = v.begin(); it!= v.end(); ++it)
   cout<<*it;
1
2
  1. 使用 const 迭代器遍历
for(vector<T>::const_iterator it = v.cbegin(); it != b.cend(); ++it)
    cout<<*it;
1
2
  1. 使用 C++11 风格的遍历
for(auto& it:v)
    cout<<it;
1
2
  1. 使用 lambda 表达式访问
for_each(v.begin(), v.end(), [](int & val)->void{cout<<val;);
1

6.使用 for_each 加函数访问

template<typename T>
void printer(const T&val)
{ cout<<val<<endl;}

for_each(v.cbegin(), v.cend(), printer<int>);
1
2
3
4
5
  1. 使用 for_each 加仿函数
template<typename T>
struct functor
{
    void operator()(constT& obj)
    {
        cout<<obj<<endl;
    }
}

for_each(v.cbegin(), v.cend(), functor<int>());
1
2
3
4
5
6
7
8
9
10
编辑 (opens new window)
上次更新: 2023/02/24, 10:34:03
vector_init
macro_magic

← vector_init macro_magic→

最近更新
01
mongodb restore
03-06
02
pytesseract
02-28
03
consul
02-24
更多文章>
Theme by Vdoing | Copyright © 2022-2025 子嘉 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式