C++ 基礎(chǔ)教程

C++ 流程控制

C++ 函數(shù)

C++ 數(shù)組 & 字符串

C++ 數(shù)據(jù)結(jié)構(gòu)

C++ 類 & 對象

C++ 指針

C++ 繼承

C++ STL 教程

C++ 參考手冊

C++ map operator[] 函數(shù)使用方法及示例

C++ STL map(容器)

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 開始

參數(shù)

k:訪問其map值的元素的鍵值。

返回值

它使用鍵值返回對元素map值的引用。

實例1

讓我們看一個訪問元素的簡單示例。

#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的元素。

實例2

讓我們看一個簡單的示例,使用它們的鍵值添加元素。

#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相關(guān)聯(lián)的值,即nhooo
  cout<<mymap[101]; 
  // 打印與鍵102相關(guān)的值,即.
  cout<<mymap[102];
  //打印與鍵103相關(guān)的值,即com
  cout<<mymap[103];

  return 0;
}

輸出:

(cainiaoplus.com)

在上面的示例中,operator []用于在初始化后使用關(guān)聯(lián)的鍵值添加元素。

實例3

讓我們看一個簡單的示例,以更改與鍵值關(guā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關(guān)聯(lián)的值更改為Nidhi
  mymap[300] = "Pinku"; //將與鍵300關(guān)聯(lián)的值更改為Pinku
  mymap[500] = "Arohi"; //將與鍵500關(guān)聯(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ù)用于更改與其鍵值關(guān)聯(lián)的值。

實例4

讓我們看一個簡單的實例來區(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

在上面的示例中,當(dāng)我們使用at()函數(shù)時,它會拋出out_of_range異常,因為映射中沒有值z的鍵,而當(dāng)我們使用operator []在鍵值d中添加元素時,因為沒有鍵在map中值為“ d”的情況下,它將在map中插入鍵為“ d”且值為“ SQL”的鍵值對。

C++ STL map(容器)

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清