考虑后面使用函数,故先介绍函数

一、set   是  有序无重复动态数组

二、声明

    set<int> s;

三、常见函数

增

s.insert(2);             //插入单个元素

删                           

s.erase  (2);              //删除单个元素

s.clear();                   //清空所有元素

查

s.emtpy();                 //判空

s.find(2);                   //返回2的迭代器

s.begin();                  //指向容器的第一个元素

s.end();                     //指向最后一个元素之后的位置

s.count(x);                  //返回x在集合中出现的次数,set中只能是0/1

 for (int i : s) {           //for范围循环遍历查询(实际是迭代器的简写形式)
    cout << i << " ";
  }

                                 

  for(set<int>::iterator iter=s.begin();iter!=s.end();iter++){

       cout<<*iter<<ends;

  }                               //迭代器循环查询(只能用迭代器遍历,不能用下标遍历元素)

四、初始化

     1使用初始化列表
            set<int> s = {1, 2, 3, 4, 5};

     2使用 insert r插入单个元素/循环插入
             s.insert(6);
         

     3使用 insert 和辅组set  插入范围内元素

      set<int> s2 = {7, 8, 9};
      s.insert(s2.begin(), s2.end())

五、迭代器(主要用于容器遍历)

      迭代器可以被视为一个指向容器中元素的指针,但它提供了一种更抽象和安全的方式来访问和操作容器中的元素。迭代器并不是直接的地址,而是一个对象,提供了访问容器元素的功能和操作。

     1 、声明

              set<int>::iterator iter

     2、实例

                for(set<int>::iterator iter=s.begin();iter!=s.end();iter++){

                 cout<<*iter<<ends;

            }

六、常见实例

1、循环插入

  set<int> s;
  int n;
  cin>>n;
  for(int i=0;i<n;i++){
  int t;
  cin>>t;
  s.insert(t);
  }

2、迭代器查询

for(set<int>::iterator iter=s.begin();iter!=s.end();iter++){

    cout<<*iter<<ends;
  }

3、元素存在

 if(s.count(3)){            //s.count(x)返回x在集合中出现的次数,set中只能是0或1
    cout<<"found 3"<<endl;
  }
  else{
    cout<<"not found"<<endl;
  }

4、删除元素6

set<int>::iterator del=s.find(6);
     if(del!=s.end()){
      s.erase(6);
      cout<<"delete6后的数据"<<endl;
     }else{
      cout<<"not deleting 6 的数据"<<endl;
     }

5清空set容器

s.clear();
    if(s.empty()){
      cout<<"clear success"<<endl;
    }

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐