C++ stl map

1.定义

map是一类关联容器,他提供一对一的数据处理能力。它的特点是增加和删除节点对迭代器的影响很小。而且map可以修改实值,而不能修改key。注意使用需要加头文件#include<map>

2.基本函数

2.1.构造函数

  • std::map<int,int> ma1:创建一个空的map。
  • std::map<int, int> ma1{ { 0, 0 }, { 1, 2 }, { 2, 3 } }:创建一个拥有元素{0,0},{1,2},{2,3}的map
  • std::map<int, int> ma2(ma1):创建一个和ma1相同的ma2
  • std::map<int, int> ma3(ma2.begin(),ma2.end()):创建一个拥有[begin(),end()]之间元素的map

2.2.添加元素

  • ma1.insert(std::pair<int,int>(1,1)):添加一个元素(1,1)。但是当再次添加相同key的pair的时候将无法添加
  • ma1.insert(std::map<int,int>::value_type(1,1)):效果和上面一样
  • ma1[1]=3:添加元素(1,3),当再次添加相同key的元素时候将会把之前的值覆盖

2.3.删除元素

  • ma1.erase(iter):使用迭代器从map中删除元素
  • ma1.erase(1):从map中删除key为1的元素
  • ma1.clear():将map中的所有元素删去

2.4.map中重要的迭代器

  • ma1.begin():返回正向迭代器的第一个元素
  • ma1.end():返回正向迭代器的最后一个元素的下一个位置
  • ma1.rbegin():返回反向迭代器的第一个元素,即vector中的最后一个元素
  • ma1.rend():返回反向迭代器的最后一个元素的下一个位置,即vector中的第一个元素的前一个位置

2.5.map其他函数

  • ma1.empty():判断ma1是否为空
  • ma1.size():返回ma1中元素的个数
  • ma1.find(key):返回ma1中key所对应的迭代器
  • ma1.count(key):返回ma1中key所对应元素个数(为0或1)
  •  

3.map使用实例

  • upper_bound(),lower_bound():返回键值大于,小于等于给定元素的第一个位置
#include<iostream>
#include<map>

void main(){
	std::map<int, int> ma1;
	ma1[1] = 2;
	ma1[9] = 10;
	ma1[5] = 6;
	ma1[3] = 4;
	ma1[7] = 8;
	ma1[11] = 12;
	std::cout << ma1.upper_bound(5)->first << "," << ma1.lower_bound(5)->first;
}
  • swap():交换两个map
#include <numeric>
#include<iostream>
#include<map>

void main(){
	std::map<int, int> ma1{ { 1, 2 }, { 3, 4 }, { 5, 6 } };
	std::map<int, int> ma2{ { 7, 8 }, { 9, 10 }, { 11, 12 } };
	swap(ma1, ma2);
	std::cout << "ma1 ";
	for (auto ll : ma1)
	{
		std::cout << "{" << ll.first << "," << ll.second << "}";
	}
	std::cout << std::endl;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章