c++ set的用法

set集合是c++ stl库中自带的一个容器,set具有以下两个特点:

1、set中的元素都是排好序的

2、set集合中没有重复的元素

常用操作:

begin()    返回set容器的第一个元素的地址

end()      返回set容器的最后一个元素地址

clear()    删除set容器中的所有的元素

empty()     判断set容器是否为空

max_size()   返回set容器可能包含的元素最大个数

size()      返回当前set容器中的元素个数

erase(it) 删除迭代器指针it处元素

insert(a) 插入某个元素 

 

#include<stdio.h>

#include<set>

using namespace std;

int main()

{

set<int>s;

s.insert(3);

s.insert(1);

s.insert(2);

s.insert(1);

set<int>::iterator it;

for(it=s.begin();it!=s.end();it++) //使用迭代器进行遍历

{

printf("%dn",*it);

}

return 0;

}

//输出结果 : 1 2 3 一共插入了4个数,但是集合中只有3个数并且是有序的,可见之前说过的set集合的两个特点,有序和不重复。

  

当set集合中的元素为结构体时,该结构体必须实现运算符‘<’的重载

 

#include<stdio.h>

#include<set>

#include<string>

using namespace std;

struct People

{

string name;

int age;

bool operator <(const People p) const //运算符重载

{

return age<p.age; //按照年龄由小到大进行排序

}

};

int main()

{

set<People>s;

s.insert((People){"张三",14});

s.insert((People){"李四",16});

s.insert((People){"王二麻子",10});

set<People>::iterator it;

for(it=s.begin();it!=s.end();it++) //使用迭代器进行遍历

{

printf("姓名:%s 年龄:%dn",(*it).name.c_str(),(*it).age);

}

return 0;

}

/*

输出结果

姓名:王二麻子 年龄:10

姓名:张三 年龄:14

姓名:李四 年龄:16

*/

  

可以看到结果是按照年龄由小到大的顺序排列。

1)由小到大

 

set<int,less<int>> M;

    M.insert(1960);

    M.insert(1952);

    M.insert(1771);

    M.insert(1812);

    M.insert(1960);

    M.insert(2000);



    set<int,less<int>>::iterator N= M.begin();

    cout<<"Number of elements "<<M.size()<<endl;

    cout<<"The elements are:"<<endl;

    while(N != M.end())

    {

       cout<<*N<<endl;

       ++N;

    }

  

 图片

 

(2)由大到小:

set<int,greater<int>> M;

    M.insert(1960);

    M.insert(1952);

    M.insert(1771);

    M.insert(1812);

    M.insert(1960);

    M.insert(2000);

    set<int,greater<int>>::iteratorN = M.begin();

    cout<<"Number of elements "<<M.size()<<endl;

    cout<<"The elements are:"<<endl;

    while(N != M.end())

    {

       cout<<*N<<endl;

       ++N;

    }

输出结果:

c++ set的用法

原文链接: https://www.cnblogs.com/xietianjiao/p/12876515.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    c++ set的用法

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/347966

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午4:48
下一篇 2023年3月2日 上午4:48

相关推荐