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> ...
随机推荐
- python之路---模块
在python中,为了简少代码重复量,我们将引用了函数,面向对象 等方法.为了能够让这些函数,面向对象可以再其他python文件中引用,我们将功能函数写在一个py文件中,该py文件即是一个模块,可以共 ...
- case语法
一.文件系统访问列表 FACL :Filesystem Access Control List 文件系统访问列表 利用文件扩展保存额外的访问控制权限. setfacl: -m:设定访问控制权限 ...
- Postman插件使用
Postman插件:模拟前端请求后台,用于后台对外接口测试 POSTMAN解决..先解压Postman_v4.1.3.rar 然后按自己实际解压的文件夹里面的这个文件夹_metadata前面的_去掉 ...
- Erlang-接口技术
系统的构建一定会设计到简历接口,让他与不同的语言的应用程序之间简历系统的联系.这就叫做erlang的接口技术. 接口技术的三种实现方法: 1.让程序以外部操作系统进行的形式在Erlang虚拟机以外运行 ...
- mod_conference ESL控制一(原理)
本文介绍通过freeswitch mod_conference 的配置和APP,以及如何通过这些事件实现会议控制. 需求 ESL内联,发起会议.加人.踢人.静音.恢复静音.申请发言.结束会议等基础功能 ...
- CSS权值
选择器权值 标签选择器:权值为1 类选择器和伪类:权值为10 ID选择器:权值为100 通配符选择器:权值为0 行内样式:权值为1000 !important规则: 可调整样式规则的优先级 添加在样式 ...
- Spring boot+Spring Security 4配置整合实例 【转】
http://blog.csdn.net/code__code/article/details/53885510
- JDBC执行SQL语句以及Date对象和字符串之间的相互转换(关键是那张标准表)
只要能分隔数字就行,老外没有11月这个概念 以前看见被人这么写,你觉得可以写成yyYY这样吗,可以mm这样吗,可以mM这样吗,不要有这种想法 都是大神们都写好了,只需要参考手册,然后调用API就行了 ...
- [Android]-图片JNI(C++\Java)高斯模糊的实现与比較
版权声明:本文作者:Qiujuer https://github.com/qiujuer; 转载请注明出处,盗版必究! !! https://blog.csdn.net/qiujuer/article ...
- day51 django第二天 django初识
一.模块渲染 jinja2 实现简单的字符串替换(动态页面) 1.下载 pip install jinja2 示例 : html文件中 <!DOCTYPE html> <html ...