C++标准模板库——set

直接上代码:

#include<cstdio>
#include<set>
using namespace std;

int main(){
	set<int> si;
	//迭代器 只有vector和string支持 it+i的写法
	si.insert(3);
	si.insert(5);
	si.insert(2);
	si.insert(4);
	si.insert(1); 
	
	//且不支持 it<si.end() 的写法
	
	for(set<int>::iterator it=si.begin();it!=si.end();it++){
		printf("%d ",*it);
	} 
	printf("\n"); 
	
	//find(x) 返回set中值为x的迭代器   迭代器与数据一一对应  
	
    set<int>::iterator 	it=si.find(2);  
	printf("%d\n",*it); 
	
	it=si.find(100);   //此时迭代器到了si.end() 因为找不到所要查找的数据  打印出来的是set的size() 
	//加一个判断
	printf("查找时加一个判断后 防止找不到\n");  
	if(it != si.end()){
		printf("%d\n",*it); 
	} 
	else
		printf("can not find the date\n");
	
	printf("打印set大小\n");
	printf("%d\n",si.size()); 
	
	//erase() 删除一个元素或者是删除一个区间的元素 
	printf("删除一个元素3\n");
	si.erase(si.find(3));
	for(set<int>::iterator it=si.begin();it!=si.end();it++){
		printf("%d ",*it);
	} 
	printf("\n"); 
	
	printf("删除一个元素1\n");
	si.erase(1);
	for(set<int>::iterator it=si.begin();it!=si.end();it++){
		printf("%d ",*it);
	} 
	printf("\n"); 
	
	//删除从ii迭代器查找到的数据之后的所有数据 就是一只写到end()  左闭右开
	printf("删除一个区间元素\n"); 
	set<int>::iterator ii=si.find(4);
	si.erase(ii,si.end());
	for(set<int>::iterator it=si.begin();it != si.end();it++){
		printf("%d ",*it);
	}
	
	//clear() 清空 
	
	printf("清空\n");
	si.clear();
	printf("%d",si.size());
	
	return 0;
} 


运行结果:



猜你喜欢

转载自blog.csdn.net/lili_code/article/details/80754810