首页 > 其他分享 >set

set

时间:2024-03-03 19:12:07浏览次数:18  
标签:myUnorderedset insert set cout int mySet

set集合

  • set一种容器,用于储存唯一的元素(不允许重复),并按照升序排序(<)
  • 内部实现是红黑树
    image
    image

比较函数重置

  1. greater函数
#include<bits/stdc++.h>
using namespace std;
int main()
{
    set<int,greater<int>> mySet;
    mySet.insert(25);
    mySet.insert(17);
    mySet.insert(39);
    mySet.insert(42);

    for(const auto& elem : mySet){
        cout << elem <<" ";
    }
    cout << endl;

    return 0;
}
  1. 自定义比较函数
#include<bits/stdc++.h>
using namespace std;
struct MyCompare{
    bool operator()(const int& a,const int& b)const{
        return a > b;
    }

};
int main()
{
    set<int,MyCompare> mySet;
    mySet.insert(25);
    mySet.insert(17);
    mySet.insert(39);
    mySet.insert(42);

    for (const auto& elem : mySet){
        cout << elem <<" ";
    }
    cout << endl;
    return 0;
}

multiset多重集合*

  • 与set不同允许重复元素
    image
    image
  • 其中erase()会删除相同的所有元素
  • st.erase(st.find())只会删除相同的一个元素

unordered_set无序集合

  • 没有特定的顺序
  • 实现基础是哈希表
  • 即插入,删除和查找的时间复杂度都是常数时间,O(1)
    image

代码示例

  1. set
#include<bits/stdc++.h>
using namespace std;
int main()
{
    set<int> myset;//声明set
    //插入元素
    myset.insert(5);
    myset.insert(2);
    myset.insert(8);
    myset.insert(2);
    cout << "Set elements: " ;
    for(const auto& elem : myset){
        cout << elem << " ";
    }
    cout << endl;
    int searchValue = 5;//搜索5
    auto it = myset.find(searchValue);
    if(it != myset.end()){
        cout << searchValue << " found in the set." << endl;

    }else{
        cout << searchValue << "not found in the set." << endl;

    }
    int removeValue = 2;//移除2
    myset.erase(removeValue);
    cout << "set elements after removal";
    for(const auto& elem : myset){
        cout << elem <<" ";

    }cout <<endl;
    myset.clear();//清空set
    if(myset.empty())//判断是否为空
    {
        cout << " set is empty" << endl;
    }else{
        cout << "set is not empty" << endl;
    }
    return 0;

}
  1. multiset多重集合
#include<bits/stdc++.h>
using namespace std;
int main()
{
    multiset<int> myMultiset;
    myMultiset.insert(5);
    myMultiset.insert(2);
    myMultiset.insert(8);
    myMultiset.insert(2);

    cout << "Multiset elements:";
    for(const auto& elem : myMultiset){
        cout << elem <<" ";
    }cout << endl;
    int searchValue = 5;
    auto range = myMultiset.equal_range(searchValue);
    if(range.first != range.second){
        cout << searchValue <<" found in the multiset."<< endl;
    }else{
        cout << searchValue << " not found in the multiset."<< endl;

    }
    int removeValue = 2;
    myMultiset.erase(removeValue);
    cout << "Multiset elements after removal:";
    for (const auto& elem : myMultiset){
        cout << elem <<" ";

    }cout << endl;
    myMultiset.clear();
    if(myMultiset.empty()){
        cout << "Multiset is empty."<< endl;
    }else{
        cout << "Multiset is not empty." << endl;
    }
    return 0;
}
  1. unordered_set无序集合
#include<bits/stdc++.h>
using namespace std;
int main()
{
    unordered_set<int> myUnorderedset;

    myUnorderedset.insert(5);
    myUnorderedset.insert(5);
    myUnorderedset.insert(5);
    myUnorderedset.insert(5);
    cout << "Unordered set elements:" ;
    for (const auto& elem : myUnorderedset){
        cout << elem <<" ";
    }cout << endl;
    int searchValue = 5;
    auto it = myUnorderedset.find(searchValue);
    if(it != myUnorderedset.end()){
        cout << searchValue << "found in the unordered set."<< endl;
    }else{
        cout << searchValue << "not found in the unordered set."<<endl;

    }
    int removeValue = 2;
    myUnorderedset.erase(removeValue);
    cout << "Unordered set elements after removal:";
    for(const auto& elem : myUnorderedset){
        cout << elem <<" ";

    }cout << endl;
    myUnorderedset.clear();
    if(myUnorderedset.empty()){
        cout << "Unordered set is empty."<< endl;
    }else{
        cout << "Unordered set is not empty."<< endl;
    }
    return 0;
}

标签:myUnorderedset,insert,set,cout,int,mySet
From: https://www.cnblogs.com/777CC/p/18050482

相关文章

  • Different Subsets For All Tuples (数学)
    DifferentSubsetsForAllTuples数学题面有一个长度为\(n\)的数列,每个位置上数字的值在\([1,m]\)范围内,则共有\(m^n\)种可能的数列。分别求出每个数列中本质不同的子序列个数(包含空序列),然后求和,答案对\(10^9+7\)取模。(\(1\len,m\le10^6\))数据范围$1<=n,m<=10^{6}$解法......
  • 5-Redis十大关系之集合Set
    redis十大关系之集合Set(value不重复)添加元素:SADDkeymember[member...]遍历集合中所有元素:SMEMBERSkey判断元素是否在集合中:SISMEMBERkeymember删除元素:SREMkeymember[member...]获取集合里面元素的个数:SCARDkey从集合中随机展现设置的数字个数元素,元素不删除......
  • AT_abc169_f Knapsack for All Subsets题解
    如果我们定义\(dp[i][j]\)表示对于前i个字符而言,其子集满足条件的个数。那4么对于一个位置i而言,要么选择它贡献要么不选择,所以\(dp[i][j]=dp[i-1][j-a[i]](j>=a[i])+dp[i-1][j]\),这是每一个\(f(i)\)的函数。然后我们加上所有的\(dp[i][k](i:1到n)ans+=dp[i][k......
  • SSH连接告警:-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
    问题ssh连接登录时报错Lastlogin:SatMar209:58:252024from10.10.1.1-bash:warning:setlocale:LC_ALL:cannotchangelocale(en_US.UTF-8)[root@master01~]#解决系统已经设置了默认地区_语言,字符集为en_US.UTF-8,但是在系统中没有定义对应的locale文件,只......
  • 李宏毅2022机器学习HW4 Speaker Identification上(Dataset &Self-Attention)
    Homework4Dataset介绍及处理Datasetintroduction训练数据集metadata.json包括speakers和n_mels,前者表示每个speaker所包含的多条语音信息(每条信息有一个路径feature_path和改条信息的长度mel_len或理解为frame数即可),后者表示滤波器数量,简单理解为特征数即可,由此可知每个.pt......
  • 基础设置之——dev_set_check
    dev_set_check(::Mode:)dev_set_checkspecifieshowHDevelophastoreactincaseofanerror,i.e.,ifthereturnstateofanoperatorisnotH_MSG_TRUE(2).IfModehasthevalue'give_error'---whichisthesystemdefault---anerroneousop......
  • 【STL和泛型编程】4. hashtable、unordered_set、unordered_map
    1.hashtable前置知识:【数据结构】3.跳表和散列 基本原理:将Key计算成一个数值,然后取余数得到它在表头中的位置table(篮子)里每个指针都指向一个链表(桶)来存储余数相同的值如果桶内的元素个数比篮子个数还多,则将篮子的大小扩充篮子是vector,数量是质数,初始为53,53扩充后为97......
  • dev_set_lut显示效果
    1.原图——dev_set_lut('default')2.dev_set_lut('rainbow')3.dev_set_lut('temperature') 4.dev_set_lut('inverse') 其它可设置参数:*'default','linear','inverse','sqr','inv_......
  • 微信小程序中调用wx.getSetting可以获取到哪些权限设置
    微信小程序中调用wx.getSetting可以获取到哪些权限设置:https://blog.csdn.net/u012767761/article/details/119648707?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170928385316800222888134%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&reque......
  • Superset3 前后端搭建详解
    Superset3搭建目录Superset3搭建后端:方法1、在Windows本地搭建方法2:运维线上搭建前端:前端搭建Superset数据库其他Superset框架是一套包括前后端代码的框架,后端语言为Python,前端语言为React,superset启动后包括一个前端地址+端口,一个后端地址+端口的服务,后端这个服务是带......