首页 > 其他 > 详细

set

时间:2019-02-06 19:15:13      阅读:198      评论:0      收藏:0      [点我收藏+]

 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("%d\n",*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 年龄:%d\n",(*it).name.c_str(),(*it).age);
    }
    return 0;
}
/*
输出结果
 姓名:王二麻子 年龄:10
姓名:张三 年龄:14
姓名:李四 年龄:16 
*/ 

 查找set种的数据

#include<stdio.h>
#include<set>
#include<iostream>
using namespace std;
int main()
{
    set<int>s;
    s.insert(1);
    s.insert(3);
    s.insert(5);

    set<int>::iterator ite;



    //输出found
    ite=s.find(1);
    if(ite==s.end())
      puts("not found");
   else
      puts("found");

    //输出not found
    ite=s.find(2);
   if(ite==s.end())
      puts("not found");
   else
      puts("found");
    return 0;
}

 

set

原文:https://www.cnblogs.com/jrfr/p/10353950.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!