1.迭代器
(1)正向迭代器 : 容器类名::iterator 迭代器名;
(2)常量正向迭代器
(3)反向迭代器
(4)常量反向迭代器
举例:
#include "iostream"
#include "vector"
using namespace std;
int main(){
vector<int> v;
for(int n = 0; n < 5; ++n)
v.push_back(n);
vector<int>::iterator i;
for( i = v.begin(); i!= v.end(); ++i){
cout<< *i << " ";
*i *= 2;
}
cout<<endl;
vector<int>::reverse_iterator j;
for(j = v.rbegin(); j!= v.rend(); j++)
cout<< *j << " ";
return 0;
}
end成员函数返回值是最后一个元素后面的元素。
迭代器功能分类:
不同容器上的迭代器功能有所不同。决定了是否支持STL中的算法。
正向迭代器 ++p p++ *p
双向迭代器 --p p--
随机访问迭代器 p+=i p-=i p+i p-i p[i]两个随机访问迭代器可以用<>=等符号比较
不同容器上的功能:
vector,deque: 随机
list,set,map双向
stack queue priority_queque 不支持迭代器
另外,数组也是容器,数组上的迭代器就是指针,而且是最忌访问迭代器。
算法
copy,remove,random_shuffle.fill.find.count_if
STL算法中只用<比较大小
顺序容器:
vector
访问较快,插入删除慢