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