STL中vector以及 for_each几种用法
2015-03-22 19:13
399 查看
/* * vector_test.cpp * * Created on: 2015-3-22 * Author: gino */ #include <iostream> #include <vector> #include <algorithm> using namespace std; void printElem(int num){ cout << num << " "; } class myclass{ public: void operator()(int i){ cout << i << " " ; } }; int main(){ vector<int> v1; myclass myobject; //append v1.push_back(12); v1.push_back(16); v1.push_back(18); cout << v1[2] << endl; cout << *(v1.begin() + 1) << endl; v1[0] += 23; cout << v1[0] <<endl; cout << "v1.capacity : " << v1.capacity() <<endl; cout << v1.size() << endl; //invalid iterator vector<int>::iterator it = v1.begin(); cout << *it << endl; v1.push_back(99); v1.push_back(108); cout << *it << endl; //危险 //insert v1.insert(v1.begin()+2,123); //for_each for_each(v1.begin(),v1.end(),printElem); cout << endl; for_each(v1.begin(),v1.end(),myclass()); cout << endl; for_each(v1.begin(),v1.end(),myobject); cout << endl; for_each(v1.begin(),v1.end(),[](int value){cout << value << " ";}); cout << endl; v1.erase(v1.end() -2); for_each(v1.begin(),v1.end(),[](int value){cout << value << " ";}); }
总结:
vector迭代器失效: 当我们插入一个元素时它的预分配空间不够时,它会重新申请一段新空间,将原空间上的元素复制到新的空间上去,然后再把新加入的元素放到新空间的尾部,以满足vector元素要求连续存储的目的。 正确的做法是 超过vector容量后,重新取一次迭代器。
for_each : STL for_each函数定义在头文件<algorithm>里面,函数原型如下
template<class _InIt, class _Fn1> _Fn1 for_each(InIt _First, InIt _Last, _Fn1 _Func){ //perform function for each element for( ; _First != _Last; ++_First) _Func(*_First); //Note! return (_Func); }
第一个参数与第二个参数是代表一个区间,for_each函数循环将区间中的元素传递给第三个参数(函数对象 or 函数名 or 匿名函数)
由于匿名函数是C++ 11的标准 在编译时 需要加上 -std=c++0x 或者 -std=gnu++0x 选项
相关文章推荐
- [STL]for_each详细用法[转]
- PHP 数组的遍历的几种方式(以及foreach与for/while+each效率的比较)
- (STL)for_each、find_if用法
- STL-fill()填充算法以及for_each()算法
- c++ 标准模板库 STL 算法之 for_each 函数的使用用法详解
- STL学习之十四:常用算法 for_each 和 transform以及adjacent_find的示例代码
- STL fill()填充算法以及for_each()算法 取容器中的最大最小值min_element,max_element
- STL学习之for_each的用法
- stl模板中vector的用法以及其功能
- 【C++ STL应用与实现】26: 如何使用std::for_each以及基于范围的for循环 (since C++11)
- STL——for_each的用法
- STL之sort和for_each的用法
- STL for_each 用法
- c++ 标准模板库 STL 算法之 for_each 函数的使用用法详解
- STL::for_each用法
- stl for_each某种用法
- STL中的常用的vector,map,set,sort用法笔记(转)
- 数据绑定以及Container.DataItem几种方式与用法分析
- PHP中for循环语句的几种“变态”用法
- 几种STL容器的基本用法[资料]