-
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();//必须使用引用,否则只能修改临时变量
-
作者:长风
Email:844064492@qq.com
QQ群:607717453
Git:https://github.com/zhaohu19910409Dz
开源项目:https://github.com/OriginMEK/MEK
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
感谢您的阅读。如果觉得有用的就请各位大神高抬贵手“推荐一下”吧!你的精神支持是博主强大的写作动力。
如果觉得我的博客有意思,欢迎点击首页左上角的“+加关注”按钮关注我!