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

本文探讨了C++中不同容器迭代器的使用规则,指出vector和deque的迭代器支持比较操作,而set、map由于排序特性不支持。list的迭代器不提供大小比较和加减操作,但支持自增自减和等于、不等于操作。在实践中,建议使用!=进行循环。同时,介绍了如何使用sort()函数对容器进行排序,以及C++11新标准的for循环访问元素的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

只有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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值