App下載

C++ Map:使用實(shí)例解析STL關(guān)聯(lián)式容器

蘿莉教主 2023-06-12 11:32:37 瀏覽數(shù) (1269)
反饋

在C++中,STL庫提供了許多容器用于數(shù)據(jù)的存儲(chǔ)和管理。其中,關(guān)聯(lián)式容器是一類常見的容器,主要用于存儲(chǔ)鍵值對(duì)的形式,例如map、multimap等。本文將以map為例,介紹其基本概念和使用方法。

Map是一種關(guān)聯(lián)式容器,將一組鍵值對(duì)存儲(chǔ)為有序的二元組。在map中,每個(gè)元素都由一個(gè)鍵和一個(gè)值組成,且鍵是唯一的。因此,map可以被看作是一種集合,其中每個(gè)元素具有唯一的鍵值,可以通過鍵值來查找元素。

下面我們來看一個(gè)具體的例子,假設(shè)有一個(gè)學(xué)生類,包含姓名和分?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類,然后創(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ù)。通過本文的例子,我們可以初步了解map的基本使用方法和特點(diǎn),希望能對(duì)大家有所幫助。

如果您還是C++初學(xué)者,可以先來試試 C++入門課程 ,零基礎(chǔ)也能學(xué)習(xí)C++!


C++

0 人點(diǎn)贊