cb23a_c++_标准模板库STL_set_multiset_关联容器

set(集)数据不能重复、multiset(多集)可以重复。操作数据速度快,数据自动排序。
红黑树(数据结构)红黑树-二叉树
基本操作
insert: 插入时比vector稍慢
count和find
erase:
注意:不能通过find进行修改(因为它会自动排序,位置就不确定),顺序容器vector可以修改。
set只能查找,不能修改。vector可以。

set可以先删除数据,再插入数据。
welcome to disscuss
txwtech@163.com

vs2017 error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“;”
打开项目工程----> 属性 ---> c/c++ --> 语言 --> 符合模式 修改成否即可
*/

  1. /*cb23a_c++_标准模板库STL_set_multiset_关联容器
  2.  
  3. set(集)数据不能重复、multiset(多集)可以重复。操作数据速度快,数据自动排序。
  4. 红黑树(数据结构)红黑树-二叉树
  5. 基本操作
  6. insert: 插入时比vector稍慢
  7. count和find
  8. erase:
  9. 注意:不能通过find进行修改(因为它会自动排序,位置就不确定),顺序容器vector可以修改。
  10. set只能查找,不能修改。vector可以。
  11. welcome to disscuss
  12. txwtech@163.com
  13.  
  14. vs2017 error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“;”
  15. 打开项目工程----> 属性 ---> c/c++ --> 语言 --> 符合模式 修改成否即可
  16. */
  17. #include <iostream>
  18. #include <set>
  19. #include <string>
  20.  
  21. using namespace std;
  22. template<typename Container> //使用模板函数,任何容器都可以显示
  23. void PrintContent(const Container &c);
  24.  
  25. int main()
  26. {
  27. set<int> a;//是一个泛型
  28. multiset<int> ma;
  29. a.insert(); //插入数据后,自动排序
  30. a.insert(-);
  31. a.insert();
  32. a.insert();//重复数据自动过滤掉
  33. cout << "显示set里面的数据: " << endl;
  34. //set<int>::const_iterator i = a.begin();
  35. /*while (i != a.end())
  36. {
  37. cout << *i << endl;
  38. ++i;
  39. }*/
  40. PrintContent(a);
  41. ma.insert(a.begin(), a.end());//a的数据全部插入到ma里面,multiset可以重复
  42. ma.insert();
  43. cout << "multiset里面有 " << ma.count() << "个3000" << endl;;//统计ma里面3000的个数
  44.  
  45. cout << "显示ma里面的数据" << endl;
  46.  
  47. //multiset<int>::const_iterator i2 = ma.begin();
  48. /*while (i2 != ma.end())
  49. {
  50. cout << *i2 << endl;
  51. ++i2;
  52. }*/
  53. PrintContent(ma);
  54. return ;
  55. }
  56. template<typename Container>
  57. void PrintContent(const Container & c)
  58. {
  59. Container::const_iterator i = c.begin();
  60. while (i != c.end())
  61. {
  62. cout << *i << endl;
  63. ++i;
  64. }
  65. }
  1. /*cb23b
  2. SETINT::iterator i_found = a.find(-1);//set只能查找,不能修改。vector可以。因为set会自动排序。
  3. cout << "如果要修改数据,先删除数据,再插入数据" << endl;
  4. */
  5. #include <iostream>
  6. #include <set>
  7.  
  8. using namespace std;
  9. typedef set<int> SETINT;//定义一个别名
  10.  
  11. int main()
  12. {
  13. //set<int> a;
  14. SETINT a;////定义一个别名
  15. a.insert();
  16. a.insert();
  17. a.insert(-);
  18. a.insert();
  19.  
  20. SETINT::const_iterator i;
  21. for (i = a.begin(); i != a.end(); ++i)
  22. cout << *i << endl;
  23. a.find(-);//返回的是迭代器
  24. SETINT::iterator i_found = a.find(-);//set只能查找,不能修改。vector可以。因为set会自动排序。
  25. if (i_found != a.end())
  26. cout << "找到了: " <<*i_found<< endl;
  27. else
  28. {
  29. cout << "没有找到" << endl;//指针指向未知。显示*i_found会报错。
  30. }
  31.  
  32. cout << "如果要修改数据,先删除数据,再插入数据" << endl;
  33. return ;
  34. }
  1. /*
  2.  
  3. */
  4. #include <iostream>
  5. #include <set>
  6.  
  7. using namespace std;
  8.  
  9. typedef multiset<int> MSETINT;
  10.  
  11. int main()
  12. {
  13. MSETINT a;
  14. a.insert();
  15. a.insert();
  16. a.insert();
  17. a.insert(-);
  18. a.insert();
  19. MSETINT::const_iterator i;
  20. cout << "multiset里有:" << a.size() << "个数据" << endl;
  21. cout << "显示每个数据:" << endl;
  22. for (i = a.begin(); i != a.end(); ++i)
  23. {
  24. cout << *i << endl;
  25. }
  26. cout << "要删除的数据是:" << endl;
  27. int nNumberToErase = ;
  28. cin >> nNumberToErase;
  29. a.erase(nNumberToErase); //删除78时,两个78都删除
  30. cout << "multiset里现有:" << a.size() << "个数据" << endl;
  31. cout << "删除后每个数据:" << endl;
  32. for (i = a.begin(); i != a.end(); ++i)
  33. {
  34. cout << *i << endl;
  35. }
  36.  
  37. a.clear();//删除全部数据、
  38. return ;
  39. }

cb23a_c++_标准模板库STL_set_multiset_关联容器的更多相关文章

  1. cb22a_c++_标准模板库_STL_map_multimap红黑树(数据结构)关联容器

    cb22a_c++_标准模板库_STL_map_multimap红黑树(数据结构)关联容器map(映射,key不能重复,一对一对的,value_type(1, "one")),mu ...

  2. STL(标准模板库)理论基础,容器,迭代器,算法

    基本概念 STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间.   ...

  3. 8、泛型程序设计与c++标准模板库2、c++标准模板库中的容器

    顺序容器类以逻辑线性排列方式存储元素,在这些容器类型中的元素在逻辑上被认为是连续的存储空间中存储的.顺序容器可用于存储线性群体. 在关联容器类中,元素的存储和检索基于关键字和元素与其他元素之间的关系, ...

  4. C++_标准模板库STL概念介绍1-建立感性认知

    标准模板库的英文缩写是STL,即Standard Template Library. STL里面有什么呢? 它提供了一组表示容器.迭代器.函数对象和算法的模板. 容器是一个与数组类似的单元,可以存储若 ...

  5. C++_标准模板库STL概念介绍2-泛型编程

    有了之前使用STL的经验后,接下来讨论泛型编程及其底层的理念: 首先我们知道STL只是泛型编程的一种: 而面向对象的编程方式关注的是编程的数据方面: 而泛型编程关注的是算法: 但是,他们之间的一个重要 ...

  6. C++_标准模板库STL概念介绍5-其他库与总结

    C++还提供了其他一些类库,这些类库更加专用. 例如,头文件complex为复数提供了类模板complex,包含用于float.long和long double的具体化. 这个类提供了标准的复数运算以 ...

  7. C++_标准模板库STL概念介绍4-算法

    STL包含很多处理容器的非成员函数: sort() copy() find() random_shuffle() set_union() set_intersection() set_differen ...

  8. 8、泛型程序设计与c++标准模板库2.5容器适配器

    容器适配器是用来扩展7中基本容器的,是修改和调整其他类接口的类.他们不提供存放数据的实际数据结构的实现方法,而且容器适配器也不支持迭代器. 1.标准栈容器 使用STL中的标准栈为程序员提供了一层附加的 ...

  9. C++_标准模板库STL概念介绍3-函数对象

    函数对象也叫做函数符(functor). 函数符是可以以函数方式和( )结合使用的任意对象. 包括函数名,指向函数的指针,重载了()运算符的类对象. 可以这样定义一个类: class Linear { ...

随机推荐

  1. 安装superset遇到的坑

    实验环境:ubuntu16.04 python环境: 3.6.7 安装参考:https://superset.incubator.apache.org/installation.html 特别提醒: ...

  2. [JavaWeb基础] 009.Struts2 上传文件

    在web开发中,我们经常遇到要把文件上传下载的功能,这篇文章旨在指导大家完成文件上传功能 1.首先我们需要一个上传文件的页面. <!--在进行文件上传时,表单提交方式一定要是post的方式, 因 ...

  3. SpringAOP使用及源码分析(SpringBoot下)

    一.SpringAOP应用 先搭建一个SpringBoot项目 <?xml version="1.0" encoding="UTF-8"?> < ...

  4. Chisel3-Intellij IDEA中使用sbt构建Chisel项目

    https://mp.weixin.qq.com/s/gssjiiPW6zUzKwCFZdNduw   1. 使用Intellij IDEA创建Scala项目   Chisel项目,就是构建Scala ...

  5. python3 pymysql查询结果包含字段名

    python2使用MySQLdb模块进行连接mysql数据库进行操作:python3则使用pymysql模块进行连接mysql数据库进行操作:两者在语法上有稍微的差别,其中就包括查询结果包含字段名,具 ...

  6. Java 蓝桥杯 算法训练 貌似化学

    ** 貌似化学 ** 问题描述 现在有a,b,c三种原料,如果他们按x:y:z混合,就能产生一种神奇的物品d. 当然不一定只产生一份d,但a,b,c的最简比一定是x:y:z 现在给你3种可供选择的物品 ...

  7. Java实现蓝桥杯 算法提高 线段和点

    算法提高 线段和点 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 有n个点和m个区间,点和区间的端点全部是整数,对于点a和区间[b,c],若a>=b且a<=c,称点a满 ...

  8. ASP.Net Web中Repeater怎么删除指定行

    使用OnItemCommand事件 首先附上相关的代码 <asp:Repeater ID="Repeater1" runat="server" OnIte ...

  9. Java实现 LeetCode 234 回文链表

    234. 回文链表 请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否 ...

  10. Java实现 LeetCode 151 翻转字符串里的单词

    151. 翻转字符串里的单词 给定一个字符串,逐个翻转字符串中的每个单词. 示例 1: 输入: "the sky is blue" 输出: "blue is sky th ...