STL容器之map

Map是一个关联容器,它内部有两个数据,第一个(first)称为关键字(key),第二个(second)称为关键字的值(value),key与value二者是一一对应的(称为pair),且key在map中关键字是唯一的。map内部自建一颗严格意义上的平衡二叉树,对数据有排序功能,因此,map内部数据都是有排序的(less或greater)。

  • map.insert()

    ?

实际上,map的insert比较简单,因此不论你怎么插,其内部的平衡二叉树都会根据关键字key自动排序。在上述代码中可知,key是string类型的,且是唯一的,插入重复的关键字的一对数据将会失效;虽然key唯一,但是value可以相同。(上面可以看作是学生的考试成绩,姓名(key)与成绩(value)一一对应)

时间: 2024-09-30 07:44:25

STL容器之map的相关文章

STL容器之map与hash_map

一.简介 就应用来说,map已经是STL标准库的成员,而hash_map暂时还未进入标准库,是扩展ext中的一个功能,但也是非常常用并且非常重要的库. 二.简单对比 首先,要说的是这两种数据结构的都提供了KEY-VALUE的存储和查找的功能.但是实现是不一样的,map是用的红黑树,查询时间复杂度为log(n).而hash_map是用的哈希表,查询时间复杂度理论上可以是常数,但是消耗内存大,是一种以存储换时间的方法. 树查找,在总查找效率上比不上hash表,但是它很稳定,它的算法复杂度不会出现波动

初探STL容器之Vector

vector 特点: 1.可变长的动态数组 2.使用时包含头文件 #include <vector> 3.支持随机访问迭代器 ? 根据下标随机访问某个元素时间为常数 ? 在尾部添加速度很快 ? 在中间插入慢 成员函数 初始化 vector(); 初始化成空 vector(int n); 初始化成有n个元素 vector(int n, const T & val); 初始化成有n个元素, 每个元素的值都是val,类型是T vector(iterator first, iterator l

初探STL容器之List

List 特点: 1.实质上是双向链表 2.使用时包含<list>头文件 #include<list> 3.不支持随机访问迭代器,只能使用双向迭代器  //因此不能使用一些算法和运算符操作 4.在任何位置的插入.删除操作都是常数时间 成员函数 初始化 list <int> intlist0; // 创建空的 intlist list <int> intlist1( 3 ); //包含3个元素 list <int> intlist2( 5, 2 )

Java容器之Map接口

Map 接口: 1. 实现 Map 接口的类是用来存储键-值(key-value)对: 2. Map 接口的实现类有 HashMap 和 TreeMap 等: 3. Map 类中存储的键-值对,通过键来标识,所以键值不能重复. 4. Map 接口的常用方法如下:    4.1 object put(K key, V value):将指定的值与此映射中的指定键关联(可选操作); 4.2 object get(Object key):返回指定键所映射的值: 4.3 object remove(Obj

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容器之list容器

链表:将数据进行链式存储.物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接进行实现的. STL中的链表是一个双向循环链表. 一.构造函数 list<T> lst; list(bag,end); list(n,elem); list(const list &list); 二.list的赋值和交换 assign(beg,end); assign(n,ele); list& operator=(const list &list); swap(list)

c++STL容器之string容器

本质:string是c++风格的字符串,而string本质上是一个类 string和char*的区别: char*是一个指针: string是一个类,类内部封装了char*,管理这个字符串,是一个char*的容器: 特点: string内部封装了很多内部成员方法,例如find.copy.delete.replace.insert等. string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行操作. 一.string构造函数 string():创建一个空的字符串 strin

c++STL容器之stack容器

栈:先进后出. 一.构造函数 stack<T> stk; stack<const stack& stk>; 二.赋值操作 stack& operator=(const stack &stk); 三.数据存取 push(ele); pop(); top(); 四.大小操作 empty(); size(); 原文地址:https://www.cnblogs.com/xiximayou/p/12111639.html