C ++ map operator []函數(shù)用于使用給定鍵值訪問map中的元素。
它類似于at()函數(shù)。它們之間的唯一區(qū)別是,如果map中不存在所訪問的鍵,則拋出異常;另一方面,如果map中不存在該鍵,則operator[]將鍵插入map中。
考慮鍵值k,語法為:
mapped_type& operator[] (const key_type& k); // 在 C++ 11 之前 mapped_type& operator[] (const key_type& k); //從 C++ 11 開始 mapped_type& operator[] (key_type&& k); //從 C++ 11 開始
k:訪問其map值的元素的鍵值。
它使用鍵值返回對元素map值的引用。
讓我們看一個訪問元素的簡單示例。
#include <iostream>
#include <map>
using namespace std;
int main()
{
map<char, int> m = {
{'a', 1},
{'b', 2},
{'c', 3},
{'d', 4},
{'e', 5},
};
cout << "Map包含以下元素" << endl;
cout << "m['a'] = " << m['a'] << endl;
cout << "m['b'] = " << m['b'] << endl;
cout << "m['c'] = " << m['c'] << endl;
cout << "m['d'] = " << m['d'] << endl;
cout << "m['e'] = " << m['e'] << endl;
return 0;
}輸出:
Map包含以下元素 m['a'] = 1 m['b'] = 2 m['c'] = 3 m['d'] = 4 m['e'] = 5
在上面,operator []函數(shù)用于訪問map的元素。
讓我們看一個簡單的示例,使用它們的鍵值添加元素。
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main ()
{
map<int,string> mymap = {
{ 101, "" },
{ 102, "" },
{ 103, ""} };
mymap[101] = "nhooo";
mymap[102] = ".";
mymap[103] = "com";
//打印與鍵101相關聯(lián)的值,即nhooo
cout<<mymap[101];
// 打印與鍵102相關的值,即.
cout<<mymap[102];
//打印與鍵103相關的值,即com
cout<<mymap[103];
return 0;
}輸出:
(cainiaoplus.com)
在上面的示例中,operator []用于在初始化后使用關聯(lián)的鍵值添加元素。
讓我們看一個簡單的示例,以更改與鍵值關聯(lián)的值。
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main ()
{
map<int,string> mymap = {
{ 100, "Nikita"},
{ 200, "Deep" },
{ 300, "Priya" },
{ 400, "Suman" },
{ 500, "Aman" }};
cout<<"元素是:" <<endl;
for (auto& x: mymap) {
cout << x.first << ": " << x.second << '\n';
}
mymap[100] = "Nidhi"; //將與鍵100關聯(lián)的值更改為Nidhi
mymap[300] = "Pinku"; //將與鍵300關聯(lián)的值更改為Pinku
mymap[500] = "Arohi"; //將與鍵500關聯(lián)的值更改為Arohi
cout<<"\n更改后的元素是:" <<endl;
for (auto& x: mymap) {
cout << x.first << ": " << x.second << '\n';
}
return 0;
}輸出:
元素是: 100: Nikita 200: Deep 300: Priya 400: Suman 500: Aman 更改后的元素是: 100: Nidhi 200: Deep 300: Pinku 400: Suman 500: Arohi
在上面的示例中,operator []函數(shù)用于更改與其鍵值關聯(lián)的值。
讓我們看一個簡單的實例來區(qū)分operator []和at()。
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main ()
{
map<char,string> mp = {
{ 'a',"Java"},
{ 'b', "C++" },
{ 'c', "Python" }};
cout<<endl<<mp['a'];
cout<<endl<<mp['b'];
cout<<endl<<mp['c'];
mp['d'] = "SQL";
cout<<endl<<mp['d'];
try {
mp.at('z');
//由于map中沒有值為z的鍵,因此會拋出異常
} catch(const out_of_range &e) {
cout<<endl<<"\n超出范圍異常 "<<e.what();
}
return 0;
}輸出:
Java C++ Python SQL 超出范圍異常 map::at
在上面的示例中,當我們使用at()函數(shù)時,它會拋出out_of_range異常,因為映射中沒有值z的鍵,而當我們使用operator []在鍵值d中添加元素時,因為沒有鍵在map中值為“ d”的情況下,它將在map中插入鍵為“ d”且值為“ SQL”的鍵值對。