C++STL模板库关联容器之set/multiset

目录

  • 一丶关联容器简介.set/multiset
  • 二丶演示代码.

一丶关联容器简介.set/multiset

我们的序列容器,底层都是线性表构成的. 比如 vector list deque. 关联容器底层就是红黑树.

以set集合为例.

set内部元素根据其值自动排序.每个元素的值只允许出现一次.不能重复.

multiset 跟set一样.只不过值可以重复.

二丶演示代码.

#include <set>

using namespace std;

int main(char *argc, char *argv[]) {

  multiset<int> muse;
  muse.insert(1);
  muse.insert(2);
  muse.insert(6);
  muse.insert(3); //插入的时候自动排序

  set<int> se;
  se.insert(1);
  se.insert(6);
  se.insert(5);

  set<int>::iterator it = se.begin();
  while (it != se.end())
  {
    cout << *it << endl;
    it++;
  }
  //查找
  it = se.find(6);//使用内部的find查找
  se.erase(it);//删除.
  se.clear();  //清空
  se.empty();  //判断是否为空

  cout << endl;
  cout << "--------------------------" << endl;
  getchar();
  system("pause");

}

set相比于序列容器. 只能使用inset方法进行添加数据. 去掉了线性表等一些操作.

如: 删除头部元素 尾部元素. 获取头部元素. 尾部元素.....

原文地址:https://www.cnblogs.com/iBinary/p/9892565.html

时间: 2024-10-17 12:17:57

C++STL模板库关联容器之set/multiset的相关文章

C++STL模板库序列容器之deque

目录 一丶队列容器deque简介 二丶使用代码演示 一丶队列容器deque简介 deque底层跟vector一样,都是数组维护.不同的是可以操作头部. 二丶使用代码演示 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <time.h> #include <algorithm> #include <iostream> #include &

C++ 泛型程序设计与STL模板库(1)---泛型程序设计简介及STL简介与结构

泛型程序设计的基本概念 编写不依赖于具体数据类型的程序 将算法从特定的数据结构中抽象出来,成为通用的 C++的模板为泛型程序设计奠定了关键的基础 术语:概念 用来界定具备一定功能的数据类型.例如: 将"可以比大小的所有数据类型(有比较运算符)"这一概念记为Comparable 将"具有公有的复制构造函数并可以用'='赋值的数据类型"这一概念记为Assignable 将"可以比大小.具有公有的复制构造函数并可以用'='赋值的所有数据类型"这个概念记

C++STL模板库之vector

目录 STL之Vecter 一丶STL简介 二丶Vector用法 1.vector容器的使用 2.vector迭代器. 3.vector中的方法. STL之Vecter 一丶STL简介 STL 是标准模板库的意思. 就是数据结构,封装成类让我们使用. 使用的时候我们要了解数据结构才可以使用这些类.因为数据结构不知道是什么结构你用类的话也用不明白. 二丶Vector用法 1.vector容器的使用 首先介绍的第一个序列容器就是 vector. 它底层是数组.可以理解为是动态数组. 我们自己也可以写

C++关联容器之map

1.map简介 map中的元素是关键字-值对:关键字起到索引的作用,值表示与索引相关的数据.我们常用的字典就是很好的map的实例,单词作为索引,其中文含义代表其值.map类型通常被称为关联数组,其和数组很相似,只不过其下标不是整数而是关键 字,我们通过关键字来查找值而不是位置.比如电话簿也是一个map的例子,姓名作为关键字其对应的值就为该人的电话号码.map类型定义在头文件map中. 注意:map是有序的且不允许重复关键字的关联容器!其有序的实现是依靠关键字类型中的"<"来实现的

C++ 关联容器之map插入相同键元素与查找元素操作

一.插入相同键元素操作 (1)insert方法 在map中的键必须是唯一的,当想map中连续插入键相同但值不同的元素时,编译和运行时都不会发生任何错误,系统会忽略后面的对已存在的键的插入操作,如 1 map<int,int> m1; 2 m1.insert(make_pair(1,2)); 3 m1.insert(make_pair(1,3)); 4 for(map<int,int>::iterator mit=m1.begin();mit!=m1.end();mit++){ 5

C++学习笔记之STL标准库(六)set/multiset 关联容器

包含头文件 #include <set>  声明命名空间using namespace std; set/multiset是关联容器的一种,它们会对存储的元素进行自动排序,存储元素的值不能直接的被改变,只能通过删除旧值,再插入新值的方式达到更改元素值的目的.set不允许元素的值有重复,而multiset允许有重复的元素,这是他们的唯一区别.关联容器set, multiset以及后面的map, multimap内部采用的是一种非常高效的平衡检索二叉树:红黑树. 1)构造函数 set(); //创

STL 模板库中的Stack(栈)使用

Stack 从名字中可以看得出来意思是栈, 栈的特点就是先进后出,FILO. 具体使用看下面的代码: #include <iostream> #include <stack> using namespace std; int main() { stack<int> sc; for(int i = 0; i < 10l; ++i) sc.push(i); while( !sc.empty()) { cout<<sc.top()<<"

C++ STL模板库

list vector  set map区别 本质解释: 对比: 1)vector与数组 数组声明时要指定大小.vector可变. 两者内存都是连续的. 2)vector与list vector是连续的内存,list是双向连接表,在内存中不一定连续. 当数值内存不够时,vector会重新申请一块足够大的连续内存,把原来的数据拷贝到新的内存里面:list因为不用考虑内存的连续,因此新增开销比vector小. list只能通过指针访问元素,随机访问元素的效率特别低,在需要频繁随机存取元素时,使用ve

C++标准模板库-STL库基本算法

原文链接:http://blog.csdn.net/wangfengwf/article/details/11580989#t9 16.4  STL库基本算法 标准C++STL库中算法组件为一个很重要的组成部分,该组件提供了大多数最常见的通用算法的实现,并且这些实现是经过很多测试试验并被公认在处理上是高效的.将这些最常见的算法通用化实现,最大的优势就是开发者在应用中不需要为具体的常见算法的实现而费神,只需要包含相应的头文件直接使用即可,不仅仅提高的软件开发的效率,同时还有助于软件重用性的提高.