std::set
std::set
- 不重复key
- 默认less排序
- 代码
#include <iostream>
#include <set> class Person
{
public:
Person(const std::string& name, const std::size_t nld)
{
Name = name;
Nid = nld;
} const std::string& GetName() const
{
return Name;
} const void SetId()
{
Nid++;
} const std::size_t GetId() const
{
return Nid;
}
private:
std::string Name;
std::size_t Nid;
};
//仿函数
struct PersonIdComparer: public std::binary_function<Person, Person, bool>
{
bool operator()(const Person& p1, const Person& p2) const
{
return (p1.GetId() < p2.GetId()) ? true : false;
}
}; struct PersonNameComparer: public std::binary_function<Person, Person, bool>
{
bool operator()(const Person& p1, const Person& p2) const
{
return (p1.GetName() < p2.GetName()) ? true : false;
}
}; int main()
{
const std::size_t nSize = 3;
const Person personArray[nSize] =
{
Person("Tom", 1),
Person("Jason", 2),
Person("Alice", 3)
}; std::set<Person,PersonIdComparer> ps1(personArray, personArray + nSize); //插入元素
ps1.insert(Person("Bill",4)); //删除元素
std::set<Person, PersonIdComparer>::iterator it = ps1.begin();
std::advance(it, 1);
ps1.erase(it); for(it = ps1.begin(); it != ps1.end(); ++it)
{
const_cast<Person&>(*it).SetId();
std::cout<<"Id:"<<(*it).GetId()<<"Name:"<<(*it).GetName()<<std::endl;
}
return 0;
}
- set相关算法
- set_union
- set_intersection
- set_difference
- set不允许通过直接迭代器改变成员
const_cast<Person&>(*it).SetId();//必须使用引用,否则只能修改临时变量
std::set的更多相关文章
- 【NX二次开发】NX内部函数,libuifw.dll文件中的内部函数
本文分为两部分:"带参数的函数"和 "带修饰的函数". 浏览这篇博客前请先阅读: [NX二次开发]NX内部函数,查找内部函数的方法 带参数的函数: void U ...
- C++ std::set
std::set template < class T, // set::key_type/value_type class Compare = less<T>, // set::k ...
- C++ std::priority_queue
std::priority_queue template <class T, class Container = vector<T>, class Compare = less< ...
- C++ std::queue
std::queue template <class T, class Container = deque<T> > class queue; FIFO queue queue ...
- C++ std::multimap
std::multimap template < class Key, // multimap::key_type class T, // multimap::mapped_type class ...
- C++ std::map
std::map template < class Key, // map::key_type class T, // map::mapped_type class Compare = less ...
- C++ std::list
std::list template < class T, class Alloc = allocator > class list; List Lists are sequence co ...
- C++ std::forward_list
std::forward_list template < class T, class Alloc = allocator > class forward_list; Forward li ...
- C++ std::deque
std::deque template < class T, class Alloc = allocator > class deque; Double ended queue deque ...
- C++ std::array
std::array template < class T, size_t N > class array; Code Example #include <iostream> ...
随机推荐
- learning makefile static model
- MyEclipse中点击部署项目无响应(Deploy MyEclipse J2EE Project to Server)
大部分情况下,只要找到当前的工作空间,删除其中一个文件就可以. 这个文件在Myeclipse工作.metadata\.plugins\org.eclipse.core.runtime\.setting ...
- Python选修课第一届Turtle绘图大赛田康林赵冰珂组
点击此处查看视频 from turtle import* setup(600,600,200,200) #脸 penup() goto(-190,0) seth(-90) pendown() penc ...
- Jmeter压力测试生成聚合报告
Jmeter压力测试: 压力测试的场景设置分为三种: 单场景:一个请求(如:单个接口的测试) 混合场景:多个请求(如:购物流程的测试) 压测时间,一般场景都是运行10-15分钟,如果是做疲劳测试的话, ...
- .Net Core 控制台程序生产exe
打开csproj ,添加一行 <RuntimeIdentifier>win10-x64</RuntimeIdentifier> 具体如下: <Project Sdk=&q ...
- 关于itext生成pdf的新的demo(包含简单的提取txt文件的内容 和xml内容转化为pdf)
一.用的iText版本为7.0.2版本,maven的配置如下: <dependencies> <!-- always needed --> <dependency> ...
- python day27--常用模块 time,random,os,序列化
一.time模块 %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I ...
- 剑指Offer 30. 连续子数组的最大和 (数组)
题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量 ...
- pandas 将excel一列拆分成多列重新保存
利用pd.read_excel 做到将第二列“EVT-LBL”按“-”分割后重新加三列在df后面 1 读取表格df 2. 分割第二列短横连接的数字,保存到df2---- 参考:str.spilt( ...
- Beta周王者荣耀交流协会第四次Scrum会议
1.立会照片 成员王超,高远博,冉华,王磊,王玉玲,任思佳,袁玥全部到齐. master:任思佳 2.时间跨度: 2017年11月13日 11:40 — 12:10 ,总计30分钟. 3.地点: 一食 ...