容器的迭代器操作实例(依次输出、排序)

只有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;
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页