算法笔记6.2 set

版权声明:原创文章,转载请注明出处 https://blog.csdn.net/hza419763578/article/details/88312713

set:内部自动有序不含重复元素的容器
set<int> se;
set<int>::iterator it;
不支持*(it+1) //除了vector和string外都不支持  也就只有string和vector可以向数组那样[index]下标访问  
se.insert(1);//插入数字1
se.find(1);//查找数字1 返回改值地址     未找到返回se.end()
se.erase(it);//删除it迭代器所指的元素
    eg:se.insert(se.find(100));
se.erase(1);//直接以值为单位 删除值为1的元素  参数类型不同,函数重载可实现
se.erase(first,last);//删除迭代器指针[first,last)区间的所有元素
se.size();//set内元素个数
se.clear();//清空set内元素

multiset//元素可以不唯一的集合

1.定义,插入,查找(insert find)

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



int main(){
	set<int> se;
	//插入
	se.insert(3);
	se.insert(5);
	se.insert(2);
	se.insert(3);
	set<int>::iterator it;
	//输出 发现没有重复 且有序
	cout<<"输出结果:(不重复,且有序)"<<endl;
	for(it=se.begin();it!=se.end();it++){
		cout<<*it<<" ";
	}
	//error 不可下标访问 因为不可*(it+i)访问
	/*for(int i=0;i<se.size();i++){
		cout<<se[i]<<" ";
	}*/

	//查找
	int n;
	cout<<"\n查找3:";
	it=se.find(3);
	if(it!=se.end()){
		cout<<"找到"<<*it<<endl;
	}else{
		cout<<"未找到"<<endl;
	}
	cout<<"\n查找6:";
	it=se.find(6);
	if(it!=se.end()){
		cout<<"找到"<<*it<<endl;
	}else{
		cout<<"未找到"<<endl;
	}

	cout<<endl;			
	return 0;
}

2.删除erase

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

void print(set<int> se){
	for(set<int>::iterator it=se.begin();it!=se.end();it++){
		cout<<*it<<" ";
	}
	cout<<endl;
}
int main(){
	set<int> se;
	for(int i=1;i<=10;i++){
		se.insert(i*100);
	}
	cout<<"开始:\n";
	print(se);

	se.erase(se.find(200));
	se.erase(se.find(300));
	cout<<"\n1.地址删除 se.erase(se.find(200));\n   se.erase(se.find(300));后:\n";
	print(se);

	se.erase(500);
	se.erase(600);
	cout<<"\n2.值删除 se.erase(500);\n   se.erase(600);后:\n";
	print(se);

	se.erase(se.find(700),se.end());
	cout<<"\n3.区间删除 se.erase(se.find(700),se.end());后:\n";
	print(se);

	cout<<endl;
	return 0;
}

3.clear size

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

int main(){
	set<int> se;
	for(int i=1;i<=7;i++){
		se.insert(i);
	}
	cout<<"se.size()="<<se.size()<<endl;
	se.clear();
	cout<<"se.size()="<<se.size()<<endl;
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/hza419763578/article/details/88312713
set