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 列传相关推荐

  1. C++ 标准模板库(STL)

    C++ 标准模板库(STL) C++ STL (Standard Template Library标准模板库) 是通用类模板和算法的集合,它提供给程序员一些标准的数据结构的实现如 queues(队列) ...

  2. c++标准模板库STL【快速查找】【最全】【常用】【语法】

    c++标准模板库STL[快速查找][最全][常用][语法] c标准模板库STL快速查找最全常用语法         vector- 变长数组         set-内部自动有序且不含重复元素     ...

  3. c语言stl模板,c/c++开发分享C++ 标准模板库 STL 顺序容器详解

    c++ 标准模板库 stl 顺序容器 容器 顺序性 重复性 支持迭代器 vector 动态数组 无序 可重复 随机访问迭代器 deque 双向队列 无序 可重复 随机访问迭代器 list 双向链表 无 ...

  4. 13 标准模板库STL【C++】

    13 标准模板库STL 13- 判断题 单选题 填空题 程序填空题 函数题 7-1 .查找电话号码 7-2 姓名排序 7-3 Score Processing 13+ 编程题 7-1 查找成绩并折算后 ...

  5. 第十章 标准模板库STL

    第十章 标准模板库STL 因为是在复习时重写的,无法在PTA上验证,编程题格式可能有误. 判断题 1.可以通过下标随机访问向量vector中的元素.(T) 2.当向量对象的内存用完之后,就会产生越界错 ...

  6. 标准模板库STL(Standard Template Library)

    标准模板库STL(Standard Template Library)指南 /*刘振飞liuzf@pku.org.cn 1999-10-20*/ / *版权所有 (C) 1999-2004 刘振飞li ...

  7. C++中标准模板库STL基本概念

    0. 前言 C++语言的一大优势就是便于软件的重用,而重用体现在两方面: 1. 面向对象思想:继承和多态,标准类库 2. 泛程序设计(Generic Programming)思想:模板机制,标准模板库 ...

  8. 蓝桥杯算法竞赛系列第0章——蓝桥必考点及标准模板库STL(上)(万字博文,建议抱走)

    欢迎来到:遇见蓝桥遇见你,不负代码不负卿! 目录 ​ 一.蓝桥必考点剖析 二.什么是STL 三.vector的常见用法详解 1.vector的定义 2.vector容器内元素的访问 (1).通过下标访 ...

  9. C++ ——模板 标准模板库STL

    C++ 知识基础 流操作符 类 & 基础 初始化和重载 类 & 高级 继承和多态 模板 & 标准模板库STL 目录 C++ 一.模板 1.函数模板 2.类模板 二.标准模板库S ...

最新文章

  1. 程序员都讨厌写文档?这4个工具让你事半功倍
  2. mov word [LABEL_DESC_CODE32 + 2], ax
  3. FTP Active Passive
  4. lambda 对象去重_最火的java8新特性:Lambda 表达式
  5. 《版式设计——日本平面设计师参考手册》—第1章应用对象样式
  6. Java pdf文件传输_java中pdf文件的管理(pdf文件转png文件,base64传输文件以及删除)...
  7. YUV测试序列下载地址
  8. python numpy遍历_NumPy 迭代数组
  9. 【XML系列】----DTD约束(一)
  10. springboot - 应用实践(3)springboot的核心
  11. Windows 有哪些冷门但是非常值得推荐的软件?
  12. UIM28RS-IE RS485/脉冲二合一28 闭环/开环步进一体机
  13. 郭天祥的10天学会51单片机_第九节
  14. Endnote实用快捷键
  15. 2009年国家质监局公布的禁用化妆品名单
  16. 用java做出长方体的表面积_计算长方体、四棱锥的表面积和体积(Java)acm.sdut...
  17. BZOJ 1143 祭祀 river(最大独立集)
  18. HCIE - Routing Switching v3.0 Outline
  19. 比较快得Maven镜像
  20. spring boot 运行提示:Process finished with exit code 1

热门文章

  1. JavaScript(三)数值类型
  2. 人工与计算机解决问题的异同,1.1计算机解决问题的过程ppt课件 .ppt
  3. ++库 照片风格转换风格_如何用神经网络实现照片的风格转换
  4. oracle数据库王珊,数据库系统概论 王珊 教材部分总结
  5. android 自定义布局 根据布局获取类,阿里高级Android面试题解析:Android自定义View—布局过程的自定义...
  6. oracle数据库文件默认的安装位置,Oracle 10g数据库默认安装应该注意的问题
  7. mysql6.7主从_CentOS 6.7下MySQL主从部署
  8. 学堂在线 python_i学堂Python在线课堂4 | NumPy 与Pandas
  9. 机器学习Scikit-Learn模块详解
  10. Qt之QMessageBox详解