1. 程式人生 > >c++ set集合的使用方法詳解

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("%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 
*/ 

可以看到結果是按照年齡由小到大的順序排列。