c++ map的使用

1.map的賦值

有一下幾種賦值方式,最簡單的是直接賦值,其次是insert賦值,insert又有兩種插入的方法,一種是直接插入pair,另一種是插入value_type數據。如下:

	std::map<int, std::string>m_mperson;
	//成員初始化列表賦值,成員初始化列表是c++11之後纔有的
	m_mperson = {
		{ 0, "aa" },
		{ 1, "bb" }
	};
	//insert賦值
	m_mperson.insert(std::pair<int, std::string>(2, "Lisan"));
	m_mperson.insert(std::map<int, std::string>::value_type(3, "zhangsan"));
	//直接賦值
	m_mperson[4] = "wangwu";

2.可判斷insert是否成功

	std::pair <std::map<int, std::string>::iterator, bool> bInsert;
	bInsert= m_mperson.insert(std::pair<int, std::string>(2, "hh"));
	if (bInsert.second)
		std::cout << "Insert Sucess" << std::endl;
	else
		std::cout << "Insert Fail" << std::endl;

3.查找

//find
std::map<int, std::string>::iterator iter;
iter = m_mperson.find(1);
if (iter != m_mperson.end())
{
	std::cout << "Find" << std::endl;
	std::cout << iter->first << " " << iter->second << std::endl;
}
else
	std::cout << "Not Find" << std::endl;

4.延伸來看,可將map和function、bind來綁定操作

其實質還是通過key來找value,只是其value變成了函數而已。具體如下:

void Start(std::string str)
{
	std::cout <<str << std::endl;
}

void End(std::string str)
{
	std::cout <<str << std::endl;
}

int main()
{
    m_mapFun = {
		    {"Start", std::bind(Start, std::placeholders::_1)},
		    {"End", std::bind(End, std::placeholders::_1)}
	    };

    m_mapFun["Start"]("開始");
    m_mapFun["End"]("結束");
    return 0;
}

 

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