STL set&&multiset

本文深入探讨了C++标准模板库中的set容器使用方法,包括构造、插入、删除、查找等常见操作,并通过示例代码展示了如何遍历set及使用自定义比较器。对于希望掌握C++ STL set容器特性和优化数据结构操作的开发者而言,本文提供了实用的指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

set 又曰 集合
一波常见操作

#include<cstdio>
#include<set>
using namespace std;
int main(){
	set <int > s;
	s.insert(3);
	s.insert(9);
	s.insert(1);
	s.insert(5);
	s.insert(10);
	s.erase(10);//删除 
	set<int >::iterator ite;
	for(ite=s.begin() ;ite!=s.end() ;ite++){
		printf("%d ",*ite);
	}     
	return 0 ;
}
#include<set>
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
	set<int >mm;
	mm.insert(1);
	cout<<*(mm.begin() )<<endl;
	for(int i=0;i<5;i++){
		mm.insert(i); 
	} 
	for(set<int >::iterator tt=mm.begin() ;tt!=mm.end() ;tt++){
		cout<<*tt<<" ";
	}
	cout<<endl;
	cout<<(mm.find(4)==mm.end()  )<<endl;//返回0 说明4 在mm中 
	
} 
#include <iostream>
#include<set>
#include<algorithm>
#include<cstdio>
using namespace std;
void myprint(int i)
{
    cout<<" "<<i;
}
void setbuild()
{

    set<int >s1;//empty 由小到大
    set<int ,greater<int> >s2;//大于比较器的
    int arry[5]={2,3,4,5,6};
    set<int> s3(arry,arry+5);
    for_each(s3.begin (),s3.end(),myprint );//遍历函数
    cout<<endl;
    set<int ,greater<int> > s4(s3.begin(),s3.end());//s3初始s4
    for_each(s4.begin (),s4.end(),myprint );
    cout<<endl;

}
void setinsert()
{

    set<int >s;
    s.insert(1);
    s.insert(2);
    for_each(s.begin (),s.end(),myprint );
    cout<<endl;
    int arr[]={12,235,25,26,28};
    s.insert(arr+1,arr+3);
    for_each(s.begin (),s.end(),myprint );
    cout<<endl;
}
void seterase()
{

    set<int >s;
    for(int i=1;i<=10;i++)
    {
      s.insert(i);
    }
    for_each(s.begin (),s.end(),myprint );
    cout<<endl;
    s.erase(9);
    for_each(s.begin (),s.end(),myprint );
    cout<<endl;
    set<int>::iterator to,it=s.begin();
    s.erase (it);
    for_each(s.begin (),s.end(),myprint );
    cout<<endl;
    it=s.begin();
    to=s.begin();
    to++;
    to++;
    s.erase(it,to);
     for_each(s.begin (),s.end(),myprint );
    cout<<endl;
}
void setfind()
{
  set<int> s;
  s.insert(1);
  s.insert(3);
  s.insert(5);
  if(s.find(2)==s.end())//返回迭代器或s.end();
  {
      printf("NOne\n");
  }else printf("YY\n");
  if(s.find(5)==s.end())//返回迭代器或s.end();
  {
      printf("NOne\n");
  }else printf("YY\n");

}
void setcount()
{
    /*set<int>s;
    s.insert(1);
    if(s.count (0)==1)
    {
        printf("yy\n");

    }else
    {

        printf("no\n");
    }
    */
    multiset<int>ss;
    ss.insert(1);
    ss.insert(1);
    ss.insert(1);
    printf("%d\n",ss.count(1));
     printf("%d\n",ss.count(3));
}
int main()
{
    //由红黑树实现
    //构造
    //setbuild();
    //插入
    //setinsert();
    //删除
    //seterase();
    //查找
    //setfind();
    //元素是否存在
    setcount();
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值