`
jelly_bitores
  • 浏览: 46748 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

STL map常用操作简介

 
阅读更多

1.目录

  1. map简介
  2. map的功能
  3. 使用map
  4. 在map中插入元素
  5. 查找并获取map中的元素
  6. 从map中删除元素

2.map简介

map是一类关联式容器 。它的特点是增加和删除节点对迭代器的影响很小 ,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。

3.map的功能

  1. 自动建立Key - value的对应。key 和 value可以是任意你需要的类型。
  2. 根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次。
  3. 快速插入Key - Value 记录。
  4. 快速删除记录
  5. 根据Key 修改value记录。
  6. 遍历所有记录。

4.使用map

使用map得包含map类所在的头文件
#include <map> //注意,STL头文件没有扩展名.h

map对象是模板类,需要关键字和存储对象两个模板参数:
std:map<int, string> personnel;
这样就定义了一个用int作为索引,并拥有相关联的指向string的指针.

为了使用方便,可以对模板类进行一下类型定义,

typedef map<int, CString> UDT_MAP_INT_CSTRING;
UDT_MAP_INT_CSTRING enumMap;

5.在map中插入元素

改变map中的条目非常简单,因为map类已经对[]操作符进行了重载

enumMap[1] = "One";
enumMap[2] = "Two";
.....

这样非常直观,但存在一个性能的问题。插入2时,先在enumMap中查找主键为2的项,没发现,然后将一个新的对象插入enumMap,键是2,值是一个空字符串,插入完成后,将字符串赋为"Two" ; 该方法会将每个值都赋为缺省值,然后再赋为显示的值,如果元素是类对象,则开销比较大。我们可以用以下方法来避免开销:

enumMap.insert (map<int, CString> :: value_type(2, "Two"))

6.查找并获取map中的元素

下标操作符给出了获得一个值的最简单方法:

CString tmp = enumMap[2];

但是,只有当map中有这个键的实例时才对 ,否则会自动插入一个实例,值为初始化值

我们可以使用Find()和Count()方法来发现一个键是否存在。

查找map中是否包含某个关键字条目用find() 方法,传入的参数是要查找的key,在这里需要提到的是begin()和end()两个成员,分别代表map对象中第一个条目和最后一个条目,这两个数据的类型是iterator.

int nFindKey = 2;            //要查找的Key
//定义一个条目变量(实际是指针)
UDT_MAP_INT_CSTRING::iterator it= enumMap.find(nFindKey); 
if(it == enumMap.end()) {
    //没找到
}
else {
    //找到
}

通过map对象的方法获取的iterator数据类型是一个std::pair对象,包括两个数据 iterator->first 和 iterator->second 分别代表关键字和存储的数据

7.从map中删除元素

移除某个map中某个条目用erase()

该成员方法的定义如下

  1. iterator erase(iterator it); //通过一个条目对象删除
  2. iterator erase(iterator first, iterator last);        //删除一个范围
  3. size_type erase(const Key& key); //通过关键字删除

clear() 就相当于 enumMap.erase(enumMap.begin(), enumMap.end());

 

来自:http://www.cnblogs.com/TianFang/archive/2006/12/30/607859.html

分享到:
评论

相关推荐

    STL和常用算法简介

    ### STL和常用算法详解 #### 一、STL概述 STL(Standard Template Library,标准模板库)是C++标准库的重要组成部分,它提供了一系列通用的数据结构和算法,极大地简化了程序开发工作,提高了代码的复用性。STL...

    ACM中常用STL

    下面将对常用的 STL 进行介绍,包括 vector、set、map、string、priority-queue、list、bitset 等。 一、Vector Vector 是 STL 中的一种常用的容器,类似于数组,但具有自动的内存管理功能,对元素的插入和删除...

    STL 中的常用的Vector Map Set Sort用法

    常用操作包括`insert()`插入键值对,`find()`查找键,`erase()`删除键值对,以及`operator[]`访问或设置值。 3. `set`: `set`也是一个关联容器,它只存储唯一元素,元素之间按照特定的排序规则排列。`set`同样...

    ACM STL常用 的模板

    常用的 STL 模板包括 vector、list、deque、set、map、stack、queue、priority_queue 等。这些模板可以帮助我们快速实现各种数据结构和算法。 使用 STL 的注意事项 在使用 STL 时,需要注意的是,STL 的头文件没有...

    C++STL中文版 介绍了STL常用的函数和用法

    学习C++ STL时,首先应理解每个组件的作用和适用场景,然后掌握如何通过迭代器操作容器,使用算法执行常见任务。同时,了解仿函数和函数对象可以让你编写更灵活的代码。对于高级主题,如定制分配器或自定义迭代器,...

    C++ STL --map and algorithm

    C++ STL 中的 map 和 algorithm 是两种非常重要的组件,map 是一种关联式容器,能帮助我们建立一一对应的关系,而 algorithm 则提供了一些常用的算法来处理数据。 Map 简介 map 是一种典型的关联式容器,它的特点...

    常用STL的示例代码

    STL,全称为Standard Template Library(标准模板库),是C++编程语言中的一部分,它提供了一组...提供的"常用STL的示例代码"压缩包中应包含这些知识点的具体实例,可以帮助你更深入地理解STL的工作原理和使用方法。

    stl map 概述

    Map是C++标准模板库(STL)中的一个重要组成部分,它是一个关联容器,专门用于存储键值对(key-value pairs)。这里的键(key)和值(value)是一一对应的,每个键在map中唯一,不允许重复。Map通过内部实现的红黑树...

    c/c++ stl_map

    ### C/C++ STL Map #### 一、简介与基本概念 `std::map` 和 `std::multimap` 是 C++ 标准模板库 (STL) 中非常重要的容器类型,用于存储键值对(key-value pairs)。这些容器能够根据其键自动排序元素,并且提供...

    STL_中的常用的Vector_Map_Set_Sort用法

    ### C++ STL 中 Vector, Map, Set 和 Sort 的用法详解 #### 一、Vector (向量) **1. 声明** - `vector&lt;int&gt; a;` —— 声明一个元素类型为 `int` 的 `vector` 对象 `a`,初始时不含任何元素。 - `vector&lt;MyType&gt; a...

    30分钟掌握stl

    STL提供了多种容器,如`vector`、`list`和`map`等,每种容器都有自己的特点和最佳使用场景。 - **顺序容器**:如`vector`和`list`,按照插入顺序存储元素。 - **关联容器**:如`map`和`set`,根据键值进行排序。 ...

    stl常用函数

    在探讨STL(Standard Template Library,标准模板库)的常用函数之前,我们首先需要理解STL是什么以及它在C++编程中的重要性。STL是C++标准库的一部分,提供了大量预定义的数据结构(如vector、list、map等)和算法...

    C++STL库常用库函数总结

    以下是对C++ STL库中常用库函数的详细总结: 1. **vector** - `size()`:返回向量中元素的数量。 - `empty()`:检查向量是否为空。 - `clear()`:清空向量的所有元素。 - `front()` / `back()`:访问第一个和...

    STL实践指南 STL实践指南 STL实践指南 STL实践指南

    向量是STL中最常用的容器之一,它是一个动态调整大小的一维数组。向量的优点在于它可以像数组一样通过索引访问元素,同时支持动态增长以适应元素的增加。 **游标(Iterator)** 迭代器是STL的重要组成部分,它扮演...

    C++ STL程序员面试题

    - set和map的插入、删除操作的时间复杂度分析。 - 模板元编程在STL中的应用,如迭代器的类型推断。 - 使用allocator定制内存管理。 - 介绍特殊容器如priority_queue和bitset。 理解并熟练使用STL是C++程序员...

    STL_C++stl实现_

    4. **vector**:向量(vector)是最常用的STL容器之一,它是一个动态数组,可以容纳任意类型的元素。`vector`在内存中是连续存储的,这使得随机访问非常快,但插入和删除元素(尤其是中间位置)时需要移动元素,效率...

    C++STL源码PJ版

    接着,`vector.txt`是关于动态数组的实现,`std::vector`是STL中最常用的容器之一。它可以动态地改变大小,支持随机访问,其背后实现通常是通过指针和内存管理来保证效率。 `deque.txt`代表双端队列,它允许在两端...

    STL常用容器1

    STL(Standard Template Library,标准模板库)是C++编程语言中的一个重要组成部分,它提供了高效且灵活的数据结构和算法。STL主要由六个组件构成:容器、算法、迭代器、仿函数、适配器和空间配置器。在本文中,我们...

    STL容器的一些使用简介

    STL(Standard Template Library)是C++标准库中的一部分,提供了一些常用的数据结构和算法。今天,我们将介绍STL容器的一些使用简介。 首先, lets talk about setprecision。这是一个控制输出流显示浮点数的有效...

Global site tag (gtag.js) - Google Analytics