赞
踩
遍历:集合中每个元素一次且仅做一次访问。
C++中存在很多遍历方式,常见如下几种:
for
写法for
写法for_each
写法auto
与for
写法for_each
与lamdba表达式下面实例说明字符串与向量的遍历。
string str("abcdefg");
1.传统C for写法
- for(size_t i=0;i<str.size();i++){
- cout << str[i] << endl;
- }
2.迭代器for写法
- for(string::iterator it = str.begin();it != str.end();it++){
- cout << *it << endl;
- }
3.STL for_each写法
- void print(char c){
- cout << c << endl;
- }
- for_each(str.begin(),str.end(),print);
4.C++11迭代器写法
- for(string::iterator it = begin(str);it != end(str);it++){
- cout << *it << endl;
- }
或者
- for(auto it = begin(str);it != end(str);it++){
- cout << *it << endl;
- }
5. C++ 11 for loop scope写法
- for(char c : str){
- cout << c << endl;
- }
或者
- for(auto c : str){
- cout << c << endl;
- }
6.C++ 11 STL for_each与lamdba表达式
for_each(begin(str),end(str),[](char c){cout << c << endl;});
- vector<int> vec;
- vec.push_back(1);
- vec.push_back(2);
- vec.push_back(3);
- vec.push_back(4);
- vec.push_back(5);
1.C写法
- for(size_t i=0;i<vec.size();i++){
- cout << vec[i] << endl;
- }
2.迭代器写法
- for(vector<int>::iterator it = vec.begin();it != vec.end();it++){
- cout << *it << endl;
- }
3.STL for_each写法
- void print(int n){
- cout << n << endl;
- }
- for_each(vec.begin(),vec.end(),print);
4.C++11迭代器写法
- for(vector<int>::iterator it = begin(vec);it != end(vec);it++){
- cout << *it << endl;
- }
或者
- for(auto it = begin(vec);it != end(vec);it++){
- cout << *it << endl;
- }
5.C++ 11 for新语法写法
- for(int n : vec){
- cout << n << endl;
- }
或者
- for(auto n : vec){
- cout << n << endl;
- }
6.C++ 11 STL for_each与lamdba表达式
for_each(begin(vec),end(vec),[](int n){cout << n << endl;});
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。