在C++中,STL庫(kù)提供了許多容器用于數(shù)據(jù)的存儲(chǔ)和管理。其中,關(guān)聯(lián)式容器是一類(lèi)常見(jiàn)的容器,主要用于存儲(chǔ)鍵值對(duì)的形式,例如map、multimap等。本文將以map為例,介紹其基本概念和使用方法。
Map是一種關(guān)聯(lián)式容器,將一組鍵值對(duì)存儲(chǔ)為有序的二元組。在map中,每個(gè)元素都由一個(gè)鍵和一個(gè)值組成,且鍵是唯一的。因此,map可以被看作是一種集合,其中每個(gè)元素具有唯一的鍵值,可以通過(guò)鍵值來(lái)查找元素。
下面我們來(lái)看一個(gè)具體的例子,假設(shè)有一個(gè)學(xué)生類(lèi),包含姓名和分?jǐn)?shù)兩個(gè)屬性。我們要將不同學(xué)生的姓名和分?jǐn)?shù)存儲(chǔ)到一個(gè)map中,并按照分?jǐn)?shù)從高到低的順序進(jìn)行排序。代碼如下:
#include <iostream>
#include <map>
using namespace std;
class Student {
public:
string name;
int score;
Student(string n, int s):name(n),score(s){}
};
int main() {
map<int, Student, greater<int>> stu_map; // 創(chuàng)建一個(gè)map對(duì)象
// 插入學(xué)生信息
stu_map.insert(make_pair(90, Student("Tom", 90)));
stu_map.insert(make_pair(80, Student("Jack", 80)));
stu_map.insert(make_pair(70, Student("Lucy", 70)));
stu_map.insert(make_pair(85, Student("Lily", 85)));
// 遍歷輸出學(xué)生信息
for(auto iter = stu_map.begin(); iter != stu_map.end(); iter++) {
cout << "name: " << iter->second.name << ", score: " << iter->first << endl;
}
return 0;
}
在上述代碼中,我們首先定義了一個(gè)Student類(lèi),然后創(chuàng)建了一個(gè)map對(duì)象?stu_map
?。這里我們使用?greater<int>
?作為比較函數(shù),使得map按照分?jǐn)?shù)從高到低的順序排序。
接著,我們向?stu_map
?中插入了四個(gè)學(xué)生的信息,每個(gè)元素都由一個(gè)鍵值和一個(gè)Student對(duì)象組成。最后,使用迭代器遍歷輸出?stu_map
?中所有學(xué)生的信息。
運(yùn)行以上代碼,我們可以得到以下輸出結(jié)果:
name: Tom, score: 90
name: Lily, score: 85
name: Jack, score: 80
name: Lucy, score: 70
從輸出結(jié)果中可以看出,map按照分?jǐn)?shù)從高到低的順序進(jìn)行了排序,并且每個(gè)學(xué)生的姓名和分?jǐn)?shù)都正確地被輸出了。
綜上所述,map是一種非常實(shí)用的關(guān)聯(lián)式容器,可以用于存儲(chǔ)和管理數(shù)據(jù)。通過(guò)本文的例子,我們可以初步了解map的基本使用方法和特點(diǎn),希望能對(duì)大家有所幫助。
如果您還是C++初學(xué)者,可以先來(lái)試試 C++入門(mén)課程 ,零基礎(chǔ)也能學(xué)習(xí)C++!