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;
}

 

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