訪問元素

一個 std::map 需要 (key, value) 對作為輸入。

請考慮以下 std::map 初始化示例 :

std::map < std::string, int > ranking { std::make_pair("stackoverflow", 2), 
                                        std::make_pair("docs-beta", 1) };

std::map ,可以按如下方式插入元素:

ranking["stackoverflow"]=2;
ranking["docs-beta"]=1;

在上面的示例中,如果金鑰 stackoverflow 已經存在,則其值將更新為 2.如果尚未存在,則將建立新條目。

std::map ,可以通過將鍵作為索引直接訪問元素:

std::cout << ranking[ "stackoverflow" ] << std::endl;

請注意,在地圖上使用 operator[] 實際上會將帶有查詢鍵的新值插入到地圖中。這意味著即使金鑰已儲存在地圖中,也無法在 const std::map 上使用它。要防止此插入,請檢查元素是否存在(例如,使用 find())或使用 at(),如下所述。

Version >= C++ 11

std::map 可以訪問 std::map 的元素:

std::cout << ranking.at("stackoverflow") << std::endl;

請注意,如果容器不包含請求的元素,at() 將丟擲 std::out_of_range 異常。

std::mapstd::multimap 這兩個容器中,可以使用迭代器訪問元素:

Version >= C++ 11

// Example using begin()
std::multimap < int, std::string > mmp { std::make_pair(2, "stackoverflow"),
                                         std::make_pair(1, "docs-beta"),
                                         std::make_pair(2, "stackexchange")  };
auto it = mmp.begin();
std::cout << it->first << " : " << it->second << std::endl; // Output: "1 : docs-beta"
it++;
std::cout << it->first << " : " << it->second << std::endl; // Output: "2 : stackoverflow"
it++;
std::cout << it->first << " : " << it->second << std::endl; // Output: "2 : stackexchange"

// Example using rbegin()
std::map < int, std::string > mp {  std::make_pair(2, "stackoverflow"),
                                    std::make_pair(1, "docs-beta"),
                                    std::make_pair(2, "stackexchange")  };
auto it2 = mp.rbegin();
std::cout << it2->first << " : " << it2->second << std::endl; // Output: "2 : stackoverflow"
it2++;
std::cout << it2->first << " : " << it2->second << std::endl; // Output: "1 : docs-beta"