set判重与map判重(C++)

set判重

    set可以理解为一个不重复且有序的集合,实现原理红黑二叉树。

    一般我们对与set的使用集中在以下几种操作:1.声明或创建set集合 2.插入操作 3.删除操作 4。判断集合中是否有元素 5.返回集合中元素的个数 6.遍历整个集合。

具体代码:

#include
using namespace std;
int n,m;
//建立 
set intset;
set stringset;
int main(){
	string s1="测试1"; 
	string s2="测试2"; 
	string s3="测试3";
	//插入 
	stringset.insert(s3);
	stringset.insert(s1); 
	//返回集合中元素数量
	cout<<"前两次插入完成后元素的数量:"<::iterator setstringiterator;
	 for(setstringiterator=stringset.begin();setstringiterator!=stringset.end();setstringiterator++){
	 	cout<<*setstringiterator<<" ";
	 } 
	 //删除
	 stringset.erase(s3);
	 cout<<"删除后元素个数为:"<

运行结果:

set判重与map判重(C++)_第1张图片


 map判重

map头文件作用#include

map是一个关联容器,第一个称为关键字(key)每个key只能在map中出现一次。第二个成为该关键字的值(value)。map是以模板的形式实现,可以存储任意类型的数据,map主要用于一对一映射的情况,内部所有的数据都是有序的。

可以把map理解为一个函数,key为自变量,value为因变量,两者一对一映射,通过key来寻找value。所有的元素都是两个值key(键值)value(实值)。

所有元素都会按键值进行排序,属于关联式容器,不允许插入重复的key值

一.构造与赋值

构造:map m;

赋值:m.insert(pair(1,10));

具体代码:

#include
#include 
using namespace std;
void printmap(map&m){
	for(map::iterator it=m.begin();it!=m.end();it++){
		cout<<"key="<first<<"value="<second< m;//创建
	m.insert(pair(1,10));//赋值语句,1起索引作用,10实值 
	m.insert(pair(3,23));
	m.insert(pair(4,34));
	m.insert(pair(2,22));
	printmap(m);
}
int main(){
	test01();
	return 0;
} 

二.大小与交换

size();//返回容器中元素的个数

empty();//判断是否为空

swap(st);//交换两个集合容器

代码实现:

void test02(){
	map m1;//创建
	m1.insert(pair(5,55));//赋值语句,1起索引作用,10实值 
	m1.insert(pair(6,66));
	map m2;
	m2.insert(pair(7,77));
	m2.insert(pair(8,8));
	if(m1.empty()){//判断是否为空 
		cout<<"m为空"<

运行结果:

set判重与map判重(C++)_第2张图片

三.插入和删除

insert(elem);//在容器中插入元素

clear();//清除所有元素

erase(pos);//删除pos迭代器所指的元素,返回下一个元素的迭代器

erase(beg,end);//删除区间元素,返回下一个元素的迭代器

erase(key);//删除值为key的元素

四种插入方式:

	m.insert(pair(1,10));
	m.insert(make_pair(3,23));
	m.insert(map::value_type(4,34));
	m[4]=40;//不建议插入,但可以利用key访问value

代码实现:

void test01(){
	map m;//创建
	m.insert(pair(1,10));
	m.insert(make_pair(2,23));
	m.insert(map::value_type(4,34));
	m[3]=40;
	printmap(m);
	//删除
	m.erase(3); //删除key为3的数 
	printmap(m);
	m.erase(m.begin());//删除第一个数 
	printmap(m);
}

运行结果: 

set判重与map判重(C++)_第3张图片

四.查找合统计

find(key);//查找key是否存在,若存在,返回改建的元素迭代器,所不存在,返回set.end();

count(key);//由于map不包含重复的key,因此返回值为1或者0,表示包含。

void test03(){
	map m;//创建
	m.insert(pair(1,10));
	m.insert(make_pair(2,23));
	m.insert(map::value_type(4,34));
	m[3]=40;
	//查找 
    map::iterator pos=m.find(3);
	if(pos!=m.end()){
		cout<<"找到了元素key="<<(*pos).first<<"value="<second<

你可能感兴趣的:(c++,开发语言)