map以及使用举例--C++基础

简介: map以及使用举例--C++基础

关联式容器:

map的特性就是所有元素都会根据元素的key被自动排序,map的所有元素是同时拥有key和value。map不允许两个元素有相同的key。而当map同时拥有key和value的时候,它的迭代器可以修改其中的内容吗?key不可以,因为key是用来排列数据的,但是value的值就可以改变了。


当我做到set的测试时候,我想着能不能传一个结构体进来,进行set操作,看看会发生什么,没想到连编译都通不过,实在是想多了,但是map好像可以很简单的实现这个想法欸!

示例代码:

#include"Test.h"
#include<map>
#include<string>
#include<algorithm>//为了使用find、sort等方法
void main()
{
  setlocale(LC_ALL, "chs");//识别中文
  map<string, int> v1;
  v1[string("Janney")] = 9;
  v1[string("Fanney")] = 3;
  v1[string("Fgnney")] = 6;
  v1[string("Tanney")] = 7;
  v1[string("Banney")] = 8;
  v1[string("Benney")] = 1;
  v1[string("Bbnney")] = 0;
  v1[string("Bbnney")] = 90;//key值相同时,相当于修改了value
  pair<string, int> v5("KookNut", 39);
  v1.insert(v5);
  for (map<string, int>::iterator v2 = v1.begin();
    v2 != v1.end();
    v2++)
  {
    cout << v2->first << endl;
    cout << v2->second << endl;
  }
  int Number = v1[string("KookNut")];
  v1.erase(string("Tanney"));
  map<string, int>::iterator v3 = v1.find(string("Fgnney"));
  v3->second = 99;//修改value
  //v3->first = string("Fddd");
  getchar();
}

自动按照key值排序

image.png


key值不可以修改

image.png


自然的,有multiset就有multimap,multimap的特性以及用法与map完全相同,唯一的区别在于它允许key重复。

简单修改:

void main()
{
  setlocale(LC_ALL, "chs");//识别中文
  multimap<string, int> v1;
  v1.insert(make_pair(("Fanney"),3));
  v1.insert(make_pair(("Fgnney"), 6));
  v1.insert(make_pair(("Tanney"), 7));
  v1.insert(make_pair(("Banney"), 8));
  v1.insert(make_pair(("Benney"), 1));
  v1.insert(make_pair(("Bbnney"), 0));
  v1.insert(make_pair(("Bbnney"), 90));
  pair<string, int> v5("KookNut", 39);
  v1.insert(v5);
  for (map<string, int>::iterator v2 = v1.begin();
    v2 != v1.end();
    v2++)
  {
    cout << v2->first << endl;
    cout << v2->second << endl;
  }
  v1.erase(string("Tanney"));
  map<string, int>::iterator v3 = v1.find(string("Fgnney"));
  v3->second = 99;//修改value
  getchar();
}

image.png

“有志者,事竟成,破釜沉舟,百二秦关终属楚;

苦心人,天不负,卧薪尝胆,三千越甲可吞吴。”

参考书籍:

《STL源码剖析》


目录
相关文章
|
4天前
|
存储 自然语言处理 C++
【C++航海王:追寻罗杰的编程之路】set|map|multiset|multimap简单介绍
【C++航海王:追寻罗杰的编程之路】set|map|multiset|multimap简单介绍
11 0
【C++航海王:追寻罗杰的编程之路】set|map|multiset|multimap简单介绍
|
9天前
|
存储 算法 NoSQL
C++一分钟之-map与set容器详解
【6月更文挑战第21天】C++ STL的`map`和`set`是基于红黑树的关联容器,提供有序存储和高效查找。`map`存储键值对,键唯一,值可重复;`set`仅存储唯一键。两者操作时间复杂度为O(log n)。常见问题包括键的唯一性和迭代器稳定性。自定义比较函数可用于定制排序规则,内存管理需注意适时释放。理解和善用这些工具能提升代码效率。
13 3
|
11天前
|
存储 编译器 C++
|
18天前
|
存储 C++
C++的list-map链表与映射表
这篇教程介绍了C++中`list`链表和`map`映射表的基本使用。`list`链表可通过`push_front()`、`push_back()`、`pop_front()`和`pop_back()`进行元素的添加和删除,使用迭代器遍历并支持在任意位置插入或删除元素。`map`是一个键值对的集合,元素自动按键值排序,可使用下标操作符或`insert()`函数插入元素,通过迭代器遍历并修改键值对,同时提供`count()`方法统计键值出现次数。教程中包含多个示例代码以帮助理解和学习。
15 2
|
3天前
|
C++ 容器
C++ STL标准库 《map容器详解》
C++ STL标准库 《map容器详解》
7 0
|
3天前
|
存储 C++ 容器
C++ STL标准库 《map容器详解》
C++ STL标准库 《map容器详解》
8 0
|
3天前
|
C++
【c++】map和set的封装
【c++】map和set的封装
5 0
|
3天前
|
存储 C++ 容器
【c++】set|map
【c++】set|map
4 0
|
4天前
|
C++ 容器
C++之map/multimap容器
C++之map/multimap容器
5 0
|
4天前
|
存储 C++ 容器
【C++】学习笔记——map和set
【C++】学习笔记——map和set
7 0