(5)C++容器---map

map---一對一hash

#include <iostream>
#include <thread>
#include <windows.h>
#include <string>
#include <map>

void printMap(std::map<int,std::string> &m)
{
	std::map<int,std::string>::iterator itor;
	if (m.begin() == m.end())
	{
		std::cout << "map is empty!" << std::endl;
		return;
	}
	for (itor = m.begin(); itor != m.end(); ++itor)
	{
		std::cout <<"first:"<< itor->first<<",second:"<<itor->second<< std::endl;
	}
}

int main()
{

	std::map<int, std::string> m;
	std::pair<std::map<int, std::string>::iterator, bool> Insert_pair;
	std::map<int, std::string>::iterator itor;
	Insert_pair=m.insert(std::make_pair(1, "a"));
	if (Insert_pair.second)
	{
		std::cout << "insert success" << std::endl;
	}
	Insert_pair=m.insert(std::make_pair(2, "b"));
	if (Insert_pair.second)
	{
		std::cout << "insert success" << std::endl;
	}
	Insert_pair=m.insert(std::make_pair(3, "c"));
	if (Insert_pair.second)
	{
		std::cout << "insert success" << std::endl;
	}
	Insert_pair=m.insert(std::map<int, std::string>::value_type(4, "d"));
	if (Insert_pair.second)
	{
		std::cout << "insert success" << std::endl;
	}
	//插入失敗
	Insert_pair = m.insert(std::map<int, std::string>::value_type(4, "e"));
	if (Insert_pair.second)
	{
		std::cout << "insert success" << std::endl;
	}
	printMap(m);
	m[4] = "ff";//這種插入方式如果存在同樣的鍵,則把之前的value改寫掉
	printMap(m);
	//
	std::pair<int, std::string> p;
	itor = m.find(3);//通過鍵查找內容
	if (itor != m.end())
		std::cout << "Find, the value is" << itor->second << std::endl;
	else
		std::cout << "Do not Find" << std::endl;

	itor=m.lower_bound(3);//返回小於等於鍵值的位置迭代器

	std::cout << "lowwer bound::" << itor->first << itor->second << std::endl;

	itor = m.upper_bound(3);//返回大於鍵值的位置迭代器

	std::cout << "upper bound::" << itor->first << itor->second << std::endl;

	//通過鍵刪除
	int n = m.erase(4); //如果刪除了返回1,否則返回0

	//通過迭代器刪除
	m.erase(m.begin(), m.end());
	printMap(m);
	system("pause");

	return 0;
}

 

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