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> ...
随机推荐
- Handlebars的基本用法
使用Handlebars,你可以轻松创建语义化模板,Mustache模板和Handlebars是兼容的,所以你可以将Mustache导入Handlebars以使用 Handlebars 强大的功能. ...
- 远程连接Linux
远程连接Linux 为什么要远程连接Linux 在实际的工作场景中,虚拟机界面或者物理服务器本地的终端都是很少接触的,因为服务器装完系统之后,都要拉倒IDC机房托管,如果是购买的云主机,那更碰不到 ...
- html/css杂题
1.css选择器:详细(http://www.ruanyifeng.com/blog/2009/03/css_selectors.html) 派生选择器:按标签 类别选择器:按class ID选择器: ...
- My SQL随记 001 常用名词/结构化语言
DBMS (Database Management System) 字段/域(列名或者列头 如:姓名身高性别为字段) 姓名 身高 性别 小周周 157 女 记录(一行数据 如:小周周 157 女 ) ...
- windows环境安装MySQL
转:https://www.cnblogs.com/ayyl/p/5978418.html windows环境安装MySQL mySQL下载链接:MySQL Installer 5.7 :http:/ ...
- tomcat 启动脚本走过的坑
最近由于 程序写的问题 tomcat经常需要重启,所以就让我写给监控tomcat并启动的脚本 例: 看着一起正常 然后就写到 crontab 计划任务里了 后来发现不管用, 找了好多文档 就是找不到问 ...
- nginx的变量参数 详解
$args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有参数,值为"?",否则为 ...
- apache kylin总结
去年12月挖的坑,今天找时间填上.update:20190119 一.kylin架构 核心是预计算,在此架构上做了一些优化.计算结果存储在Hbase,对Hive等查询转换为Hbase的Scan,提高速 ...
- 【leetcode】429. N-ary Tree Level Order Traversal
problem 429. N-ary Tree Level Order Traversal solution1:Iteration /* // Definition for a Node. class ...
- 桥接模式-pattern系列
git链接 桥接模式 桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化".这句话有三个关键词,也就是抽象化. ...