C++学習(9):関連コンテナmap、multimap、unordered_mapの比較と使い方

2732 ワード

前言:
C++
Java
特長
map
TreeMap
要素keyは一意で秩序がある
multimap
要素keyは一意ではありません.その他はmapと同じです.
unordered_map
HashMap
要素keyは一意ですが、無秩序です.
本文:
学習コンテナはまずコンテナの記憶構造を学習し,次に添削改行の方法を学習する.
#include 
#include 
#include 
#include 
using namespace std;

void mapTest() {
	map student; //C++ map   Java TreeMap,key  ,  

	// 1  
	student["xiaoB"] = 18;
	student["xiaoA"] = 19; //map      [],              
	student["xiaoA"] = 19; //map key  ,     xiaoA    
	student.insert(pair("xiaoC", 20)); //        insert()  

	// 2  
	student.erase("xiaoC");

	// 3  
	student["xiaoA"] = 20;
	student.at("xiaoB") = 20;

	// 4  
	map::iterator ite = student.find("xiaoA");  //find          
	if (ite != student.end()) {
		cout << ite->first << ":" << ite->second << endl;
	}

	int cnt = student.count("xiaoF"); //count    key   (0 1)
	cout << cnt << endl;

	for (map::iterator ite = student.begin(); ite != student.end(); ite++) {
		cout << ite->first << ":" << ite->second << endl;
	}
}

void multimapTest() {
	multimap student; //multimap        key,     map  

	student.insert(pair("xiaoB", 18));
	student.insert(pair("xiaoC", 18));
	student.insert(pair("xiaoA", 20));
	student.insert(pair("xiaoC", 17));

	int cnt = student.count("xiaoC"); //  
	cout << cnt << endl;

	for (map::iterator ite = student.begin(); ite != student.end(); ite++) {
		cout << ite->first << ":" << ite->second << endl;
	}
}

void unordered_map_Test() {
	unordered_map student; //C++ unordered_map Java  HashMap  ,       

	student.insert(pair("xiaoB", 18));
	student.insert(pair("xiaoC", 18));
	student.insert(pair("xiaoA", 20));
	student.insert(pair("xiaoC", 17));

	for (unordered_map::iterator ite = student.begin(); ite != student.end(); ite++) {
		cout << ite->first << ":" << ite->second << endl;
	}
}

int main()
{
	mapTest();
	multimapTest();
	unordered_map_Test();
}

まとめ:
C++とJavaのコンテナの多くは共通しており,比較的把握している.