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. 四使用浮动div布局

    刚开始学习的小白,如有不足之处还请各位补充,感激涕零.在html中有两种方式布局<table>表格和<div>,个人剧的使用表格布局可以避免bug产生,并且表格布局相对来说要容 ...

  2. 使用 IdentityService4 集成小程序登录一种尝试

    1 场景介绍 主要业务是通过 App 承载,在 App 中可以注册和登录,为了更好的发展业务引入了微信小程序,于是如何让这两个入口的用户互通便成了需要解决的问题. 看了一下其它 App 大致地思路是两 ...

  3. python之robotframework+pycharm测试框架

    一.robotframework简介 Robot Framework是一款python编写的功能自动化测试框架.具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式 ...

  4. SpringBoot工程创建的三种方式

    一. 通过IDEA的spring Initializer创建 1. 打开创建项目面板 File->New->Project->Spring Initializr 2. 填写Maven ...

  5. java内部类简单用法

    package innerClass; /** * 特点 * 1:增强封装性,通过把内部类隐藏在外部类的里面,使得其他类不能访问外部类. * 2:增强可维护性. * 3:内部类可以访问外部的成员. * ...

  6. 2020年,为什么我们应该使用abapGit代替SAPLink

    SAPLink是一个帮助人们分享开发内容的工具.通过它,人们可以将ABAP开发对象从一个系统打包下载.再上传到另一个系统中.对于各种类型的开发者,它都可以起到作用: 有的开发者喜欢在不同的项目中复制相 ...

  7. C#线程 入门

    Threading in C#   第一部分: 入门 介绍和概念 C#支持通过多线程并行执行代码.线程是一个独立的执行路径,能够与其他线程同时运行.C#客户端程序(控制台,WPF或Windows窗体) ...

  8. css 段落文字换行问题

    项目中遇到的一个小问题,以前没有注意到: 超链接超出父级元素,想着给a标签加宽度但是没有效果... 后来发现两个很好用的css属性 1.word-wrap 用来控制换行 取值: (1)normal  ...

  9. Java实现 蓝桥杯 算法提高 字符串匹配

    试题 算法提高 字符串匹配 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行.你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符:当选项关闭时 ...

  10. Java实现 蓝桥杯VIP 算法提高 分苹果

    算法提高 分苹果 时间限制:1.0s 内存限制:256.0MB 问题描述 小朋友排成一排,老师给他们分苹果. 小朋友从左到右标号1-N.有M个老师,每次第i个老师会给第Li个到第Ri个,一共Ri-Li ...