只有vector和deque的迭代器iterator可以使用>,>=,<,<=操作,因为set,map经过排序,位置做过移动,C++不允许他们位置前后做比较。
同样list迭代器iterator也不提供>,>=,<,<=操作,也不提供加减操作,但提供自增自减操作和=,!=操作。
所以为了防止出错for循环中统一使用!=符号。
#include <iostream>
#include <vector>
#include <set> //包含multiset
#include <functional> // 包含less和greater
using namespace std;
typedef multiset<int,greater<int> > intset; //定义由大到小的集合
typedef multiset<int,greater<int> >::iterator setIterator;
int main(){
intset set1;
for(int i=0;i<100;i++){
set1.insert(i);
}
setIterator p=set1.begin();
for(;p!=set1.end();p++){ // 统一用!=
cout<<*p<<endl;
}
return 0;
}
容器排序sort()使用方法
#include <iostream>
#include <algorithm> //包含sort
#include <functional> //包含greater 和less
using namespace std;
vector<int> vec1;
int main(){
for(int i=0;i<100;i++){
vec1.push_back(i);
}
sort(vec1.begin(),vec1.end(),greater<int>());//由大到小排序
vector<int>::iterator q=vec1.begin();
for(;q!=vec1.end();q++){
cout<<*q<<endl;
}
}
C++11新标准for循环访问容器内元素(推荐)
vector<int> s(10,0); //定义一个包含10个初始化为0的容器s
for (auto &c : s) // 容器s中的元素依次引用赋给c
c = c+1;