1. 程式人生 > >C++中模板類map常用示例

C++中模板類map常用示例

#include <iostream>
#include <map>

using namespace std;

int main()
{
	/************************************************************************/
	/*                       map的常用方法示例                              */
	/************************************************************************/


	// map是一種關聯容器類,裡面儲存的元素型別為pair<const KEY, DATA>。不同的元素KEY值不同。	
	// 定義map及其對應的迭代器
	map<char, int> mapTest;
	map<char, int>::iterator iterTest;
	
	// 在map中插入元素
	// 這種利用下標值的插入方式,當map中沒有對應鍵值的元素時,插入。當map中存在對應鍵值的元素時,修改其值或者獲取其值。
	mapTest['a'] = 10;
	mapTest['b'] = 20;
	mapTest['c'] = 30;
	mapTest['a'] = 15;

	// 這種使用insert的插入方式,當map中沒有對應鍵值的元素時,插入。當map中存在對應鍵值的元素時,不插入元素。
	pair<map<char, int>::iterator, bool> ret;
	mapTest.insert(map<char, int>::value_type('d', 40));
	ret = mapTest.insert(make_pair('d', 50));
	mapTest.insert(make_pair('e', 50));

	// 當使用insert函式後會返回pair<map<char, int>::iterator, bool>型別的值,bool值表示是否插入成功。迭代器指向插入的元素。
	cout << ret.second << endl;
	

	// map中查詢某個指定鍵值的元素,查詢成功則返回對應的迭代器。查詢失敗則返回.end()對應的容器邊界迭代器。
	iterTest = mapTest.find('f');
	cout << (iterTest == mapTest.end()) << " find: 0 means success, 1 means failure"<< endl;

	// 正向遍歷
	cout << "正向" << endl;
	for (iterTest = mapTest.begin(); iterTest != mapTest.end(); iterTest++)
	{
		cout << iterTest->first << " " << iterTest->second << endl;
	}
	
	// 反向遍歷
	cout << "反向" << endl;
	map<char, int>::reverse_iterator iter;
	for (iter = mapTest.rbegin(); iter != mapTest.rend(); iter++)
	{
		cout << iter->first << " " << iter->second << endl;
	}

	// 使用size獲取容器中元素個數
	int num;
	num = (int)mapTest.size();
	cout << num << endl;

	// 使用clear清空容器
	mapTest.clear();

	// 使用empty判斷容器是否為空
	if (mapTest.empty())
	{
		cout << "The map is empty" << endl;
	}
	
	return 0;
}

相關推薦

C++模板map常用示例

#include <iostream> #include <map> using namespace std; int main() { /****************************************************

C++ 模板模板成員函數在外定義

成員函數 成員 typename 開源 splay 開源代碼 pen color play 因為很多書都沒講到這種情況, 曾經有這個問題但一直沒答案,所以我一直以為模板類的模板成員函數只能在類內定義,直到我在某個開源代碼裏看到原來要加兩個 template<>

C ++字串運算子過載示例

一、基本概念 (一) 函式過載的含義 所謂過載,就是重新賦予新的含義。函式過載就是對一個已有的函式賦予新的含義,使之實現新功能,因此,一個函式名就可以用來代表不同功能的函式,也就是”一名多用”。 (二) 為什麼要進行函式過載 一般情況下,編譯器對現有操作符的運算元是有一定的限制,但是

c++模板的使用

最近在資料結構的課程中很多周圍的同學對模板類的使用抱有很大的困惑,看也能看懂,但寫起來總是不明白…… 那就首先得知道為什麼要用模板。 假設我有一個方法 void swap(int& a,int& b) { int c = a;

C++模板的友元過載

一個由《程式設計師面試寶典》引出的問題。 描述模板類的友元過載,用C++程式碼實現? 這實際上考察的是下面幾個問題: 1.模板類的編寫 2.模板類中友元函式的編寫 3.什麼時候會用到友元過載?答案是各種C++中的運算子。最典型的就是輸出操作符<<了。 書上給出的

C++模板使用友元模板函式

問題始於學習資料結構,自己編寫一個單鏈表,其中用到了過載輸出運算子<<,我寫的大約這樣: template <class T> class List { friend std::ostream& operator

C++模板宣告和實現能否分離?

1.宣告部分 //point.h #ifndef _POINT_ #define _POINT_ template<class Elem> class Point { public: Point(Elem); } ; #endif 2.實現部分

C++模板詳細講述

技術 要求 ebe div spa 限制 dcb 模板的模板 文本文件 一、類模板定義及實例化 1. 定義一個類模板: 1 template<class 模板參數表>2 3 class 類名{4 5 // 類定義......6 7 };

c++模板的實現(模板模板函數)

c++ 模板實例化 泛型編程 [TOC] 模板  當我們實現一個交換函數時,我們可以寫成如下。 void Swap(int& x, int& y) { int tmp = x; x = y; y = tmp; }  這裏只能交換兩個整

C++模板

類模板(class template)是用來生成類的藍圖,它使類中的一些成員變數和成員函式的引數或返回值可以取任意的資料型別。 1 類模板的宣告 類模板通過關鍵字template來定義,其宣告格式為 template <模板引數列表> class 類名 {   

c++11模板:容器(map,set,list,vector)元素型別轉換

簡單的資料型別轉換很簡單,比如下面cast模板函式族: // 相同型別直接轉發 template<typename L> L cast(L left, typename std::de

C++模板函式及模板的使用(下)

在使用模板類時,一般會將類定義及成員變數和成員函式的宣告放在h標頭檔案中,而將成員函式的定義放在cpp執行檔案中。在編譯程式時可能會出現如下錯誤提示 errorLNK2019: 無法解析的外部符號"public:void __thiscall Stack<int,10

C++之模板(Template) 容器之map 及 物件副本 深/淺拷貝 等問題

例如:假若你沒有提供CFileAttribute::operator=(過載賦值操作符),那麼語句fileAttribute1 = fileAttribute2就相當於:memcpy(&fileAttribute1, &fileAttribute2, sizeof(CFileAttribut

C++的虛函數必需要實現嗎?

font virt ron rtu 實現 div -a 實例對象 ont 一、情景 C++中父類的虛函數必需要實現嗎? class Vir{ public: virtual void tryVirtual(); }; class CVir:public Vir{

C++ 模板Template的使用

ddc 說明 hid javascrip tro 返回 數據 ret text 1、在c++Template中非常多地方都用到了typename與class這兩個關鍵字,並且好像能夠替換,是不是這兩個關鍵字全然一樣呢? 答:class用於定義類,在模板

[轉]C++模板的特化與偏特化

解析 匹配規則 創意 復雜 href 靈活 類模板特化 總結 行存儲 轉載自:http://hi.baidu.com/klcdyx2008/blog/item/5adbf77b79f316f90bd1873c.html 1.引言C++中的模板分為類模板和函數模板,雖然它引進

JavaMath常用方法

order ref oat math dom ack ron 方法 args 8243 [java] view plain copy public class MathDemo { public static void main(

javascriptArray常用方法

urn 字符 長度 splice ear 位置 調用 each 使用 方法總覽: instanceOf Array.isArray() toString() join() push() pop() shift() unshift() splice() concat() s

C++class()與繼承白話學習筆記

double 價格 體積 blog 示例 mes nta size ext 1.class(類) class Drink{//定義飲料類 public://public下面的東西可以被外面訪問 char* type;//飲料種類

C#引用的就近原則

調用 data clas body 方式 但是 項目 mysql pos 應該是使用Mysql.Data中的MySqlConnection類,但是C#語法中有一個就近原則:優先使用項目本身的類。 所以這裏兩種解決方法: 第一種:使用命名空間加類名但方式區調用; 第