标准模板库 STL—— set 列传
STL 中的容器们
标准模板库(STL)之 vector 列传
- set/multiset 通常以红黑树(red-black tree)实现。红黑树在改变元素数量和元素搜索方面都很出色,它保证节点安插时最多只会做两个重新链接(relink)的动作,而且到达某一元素的最长路径的深度,至多只是最短路径的深度的两倍。
创建 set 容器对象时,指定排序规则(sorting criterion)
set (模板容器类)的第二个模板参数标识:排序规则(一般为仿函数)
class Person
{
public:std::string firstname() const;std::string lastname() const;...
}class PersonSortingCriterion
{
public:bool operator()(const Person& left, const Person& right) const{return left.lastname() < right.lastname() || (left.lastname() == right.lastname() && left.firstname() < right.firstname());}
};
int main(int, char**)
{std::set<Person, PersonSortingCriterion> coll;...return 0;
}
常见成员函数
(1)插入(insert)
set 提供如下接口:
pair<iterator, bool> insert(const value_type& val); iterator insert(const_iterator posHint, const value_type& val);// 注意两者返回值的区别
- pair 结构的 second 成员表示安插是否成功
- pair 结构的 first 成员表示新元素的位置,或现存的同值元素的位置。
std::set<double> s; if (s.insert(3.3).second) { ... } else { ... }
如果还想处理新位置或旧位置,此时就需要有保存 insert() 的返回值了:
auto status = s.insert(value); if (status.second)std::cout << value << " inserted as element "; elsestd::cout << value << " already exists as element "; std::cout << std::distance(s.begin(), status.first)+1 << std::endl;
标准模板库 STL—— set 列传相关推荐
- C++ 标准模板库(STL)
C++ 标准模板库(STL) C++ STL (Standard Template Library标准模板库) 是通用类模板和算法的集合,它提供给程序员一些标准的数据结构的实现如 queues(队列) ...
- c++标准模板库STL【快速查找】【最全】【常用】【语法】
c++标准模板库STL[快速查找][最全][常用][语法] c标准模板库STL快速查找最全常用语法 vector- 变长数组 set-内部自动有序且不含重复元素 ...
- c语言stl模板,c/c++开发分享C++ 标准模板库 STL 顺序容器详解
c++ 标准模板库 stl 顺序容器 容器 顺序性 重复性 支持迭代器 vector 动态数组 无序 可重复 随机访问迭代器 deque 双向队列 无序 可重复 随机访问迭代器 list 双向链表 无 ...
- 13 标准模板库STL【C++】
13 标准模板库STL 13- 判断题 单选题 填空题 程序填空题 函数题 7-1 .查找电话号码 7-2 姓名排序 7-3 Score Processing 13+ 编程题 7-1 查找成绩并折算后 ...
- 第十章 标准模板库STL
第十章 标准模板库STL 因为是在复习时重写的,无法在PTA上验证,编程题格式可能有误. 判断题 1.可以通过下标随机访问向量vector中的元素.(T) 2.当向量对象的内存用完之后,就会产生越界错 ...
- 标准模板库STL(Standard Template Library)
标准模板库STL(Standard Template Library)指南 /*刘振飞liuzf@pku.org.cn 1999-10-20*/ / *版权所有 (C) 1999-2004 刘振飞li ...
- C++中标准模板库STL基本概念
0. 前言 C++语言的一大优势就是便于软件的重用,而重用体现在两方面: 1. 面向对象思想:继承和多态,标准类库 2. 泛程序设计(Generic Programming)思想:模板机制,标准模板库 ...
- 蓝桥杯算法竞赛系列第0章——蓝桥必考点及标准模板库STL(上)(万字博文,建议抱走)
欢迎来到:遇见蓝桥遇见你,不负代码不负卿! 目录 一.蓝桥必考点剖析 二.什么是STL 三.vector的常见用法详解 1.vector的定义 2.vector容器内元素的访问 (1).通过下标访 ...
- C++ ——模板 标准模板库STL
C++ 知识基础 流操作符 类 & 基础 初始化和重载 类 & 高级 继承和多态 模板 & 标准模板库STL 目录 C++ 一.模板 1.函数模板 2.类模板 二.标准模板库S ...
最新文章
- 程序员都讨厌写文档?这4个工具让你事半功倍
- mov	word [LABEL_DESC_CODE32 + 2], ax
- FTP Active Passive
- lambda 对象去重_最火的java8新特性:Lambda 表达式
- 《版式设计——日本平面设计师参考手册》—第1章应用对象样式
- Java pdf文件传输_java中pdf文件的管理(pdf文件转png文件,base64传输文件以及删除)...
- YUV测试序列下载地址
- python numpy遍历_NumPy 迭代数组
- 【XML系列】----DTD约束(一)
- springboot - 应用实践(3)springboot的核心
- Windows 有哪些冷门但是非常值得推荐的软件?
- UIM28RS-IE RS485/脉冲二合一28 闭环/开环步进一体机
- 郭天祥的10天学会51单片机_第九节
- Endnote实用快捷键
- 2009年国家质监局公布的禁用化妆品名单
- 用java做出长方体的表面积_计算长方体、四棱锥的表面积和体积(Java)acm.sdut...
- BZOJ 1143 祭祀 river(最大独立集)
- HCIE - Routing Switching v3.0 Outline
- 比较快得Maven镜像
- spring boot 运行提示:Process finished with exit code 1
热门文章
- JavaScript(三)数值类型
- 人工与计算机解决问题的异同,1.1计算机解决问题的过程ppt课件 .ppt
- ++库 照片风格转换风格_如何用神经网络实现照片的风格转换
- oracle数据库王珊,数据库系统概论 王珊 教材部分总结
- android 自定义布局 根据布局获取类,阿里高级Android面试题解析:Android自定义View—布局过程的自定义...
- oracle数据库文件默认的安装位置,Oracle 10g数据库默认安装应该注意的问题
- mysql6.7主从_CentOS 6.7下MySQL主从部署
- 学堂在线 python_i学堂Python在线课堂4 | NumPy 与Pandas
- 机器学习Scikit-Learn模块详解
- Qt之QMessageBox详解