c++ set容器

#include <iostream>

#include <string>

#include <fstream>

#include <vector>

#include <algorithm>

#include <deque>

#include <stack>

#include <queue>

#include <list>

#include <set>

using namespace std;

void printSet(const set<int> &s)

{

for (set<int>::const_iterator it = s.begin(); it != s.end(); it++)

{

cout << *it << " ";

}

cout << endl;

}

void test01()

{

set<int> s1;

s1.insert(10);

s1.insert(30);

s1.insert(50);

s1.insert(20);

s1.insert(40);

s1.erase(s1.begin());

s1.erase(50);

printSet(s1);

int num=s1.count(30);

cout << "num = " << num << endl;

if(s1.empty())

{

cout << "s1 is empty" << endl;

}

else

{

cout << "s1 is not empty, size = " << s1.size() << endl;

}

}

void test02()

{

set<int> s1;

pair<set<int>::iterator, bool> ret = s1.insert(10);

if(ret.second)

{

cout << "insert " << *(ret.first) << " success" << endl;

}

else

{

cout << "insert " << *(ret.first) << " failed" << endl;

}

ret = s1.insert(10);

if(ret.second)

{

cout << "insert " << *(ret.first) << " success" << endl;

}

else

{

cout << "insert " << *(ret.first) << " failed" << endl;

}

multiset<int> ms;

ms.insert(10);

ms.insert(10);

for(multiset<int>::iterator it = ms.begin(); it != ms.end(); it++)

{

cout << *it << " ";

}

cout << endl;

}

void test03()

{

pair<string,int> p("hello",1);

cout << p.first << " " << p.second << endl;

pair<string,int> p2(p);

cout << p2.first << " " << p2.second << endl;

}

class MyCompare

{

public:

bool operator()(int v1,int v2)const

{

return v1>v2;

}

};

void test05()

{

set<int,MyCompare> s5;

s5.insert(10);

s5.insert(20);

s5.insert(30);

for(set<int,MyCompare>::iterator it = s5.begin(); it != s5.end(); it++)

{

cout << *it << " ";

}

}

class Person

{

public:

Person(string name,int age)

{

this->m_Name = name;

this->m_Age = age;

}

string m_Name;

int m_Age;

};

class PersonCompare

{

public:

bool operator()(const Person &p1, const Person &p2)const

{

return p1.m_Age > p2.m_Age;

}

};

void test06()

{

set<Person,PersonCompare> s1;

Person p1("aaa",10);

Person p2("bbb",20);

Person p3("ccc",30);

s1.insert(p1);

s1.insert(p2);

s1.insert(p3);

for(set<Person>::iterator it = s1.begin(); it != s1.end(); it++)

{

cout << "name = " << it->m_Name << " age = " << it->m_Age << endl;

}

}

int main()

{

//test01();

//test02();

//test03();

//test05();

test06();

return 0;

system("pause");

}

相关推荐
To_OC7 小时前
LC 131 分割回文串:刚学回溯时,我连怎么切字符串都想不明白
javascript·算法·leetcode
炸膛坦客8 小时前
单片机/C/C++八股:(二十六)IIC 专题(I²C)---- 上集
c语言·c++·单片机
旖-旎8 小时前
LeetCode 518:零钱兑换||(完全背包)—— 题解
c++·算法·leetcode·动态规划·背包问题
灯澜忆梦8 小时前
GO_并发编程---定时器
开发语言·后端·golang
-银雾鸢尾-9 小时前
C#中的StringBuilder相关方法
开发语言·c#
To_OC9 小时前
LC 42 接雨水:暴力超时卡半天?前后缀数组一用就通了
javascript·算法·leetcode
Henry Zhu1239 小时前
C++中的特殊成员函数与智能指针
c++
-银雾鸢尾-9 小时前
C#中结构体与类的区别;抽象类与接口的区别
开发语言·c#
delishcomcn9 小时前
AI视觉识别+分切算法:电化铝缺陷检测与裁切一体化解锁
人工智能·算法
触底反弹10 小时前
深入理解大模型采样:Temperature、Top-K、Top-P 的原理与实战
人工智能·算法·面试