📜  C++ STL-map.operator[]函数

📅  最后修改于: 2020-10-18 03:52:47             🧑  作者: Mango

C++ STL map.operator[]函数

C++ STL map.运算符[]函数用于通过给定的键值访问映射中的元素。

它类似于at()函数。它们之间的唯一区别在于,如果映射中不存在所访问的键,则抛出异常;另一方面,如果映射中不存在该键,则运算符[]将键插入映射中。

句法

考虑键值k,语法为:

mapped_type& operator[] (const key_type& k);    //until C++ 11
mapped_type& operator[] (const key_type& k);   //since C++ 11
mapped_type& operator[] (key_type&& k); //since C++ 11

参数

k:访问其映射值的元素的键值。

返回值

它使用键值返回对元素映射值的引用。

例子1

让我们看一个访问元素的简单示例。

#include 
#include 
using namespace std;
int main() 
{
  
   map m = {
            {'a', 1},
            {'b', 2},
            {'c', 3},
            {'d', 4},
            {'e', 5},
            };

   cout << "Map contains following elements" << 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 contains following elements
m['a'] = 1
m['b'] = 2
m['c'] = 3
m['d'] = 4
m['e'] = 5

在上面, 运算符[]函数用于访问map的元素。

例子2

让我们看一个简单的示例,使用它们的键值添加元素。

#include 
#include 
#include 

using namespace std;

int main ()
{
  map mymap = {
                { 101, "" },
                { 102, "" },
                { 103, ""} };

  mymap[101] = "Java"; 
  mymap[102] = "T";
  mymap[103] = "Point";


        // prints value associated with key 101, i.e. Java
  cout<

输出:

JavaTPoint 

在上面的示例中,运算符[]用于在初始化后使用关联的键值添加元素。

例子3

让我们看一个简单的示例,以更改与键值关联的值。

#include 
#include 
#include 

using namespace std;

int main ()
{
  map mymap = {
                { 100, "Nikita"},
                { 200, "Deep"  },
                { 300, "Priya" },
                { 400, "Suman" },
                { 500, "Aman"  }};
                
  cout<<"Elements are:" <

输出:

Elements are:
100: Nikita
200: Deep
300: Priya
400: Suman
500: Aman

Elements after make changes are:
100: Nidhi
200: Deep
300: Pinku
400: Suman
500: Arohi

在上面的示例中, 运算符[]函数用于更改与其键值关联的值。

例子4

让我们看一个简单的示例,以区分运算符[]和at()。

#include 
#include 
#include 

using namespace std;

int main ()
{
  map mp = {
                { 'a',"Java"},
                { 'b', "C++"  },
                { 'c', "Python" }};
            
    cout<

输出:

Java
C++
Python
SQL

Out of Range Exception at map::at

在上面的示例中,当我们使用at()函数,它会抛出out_of_range异常,因为在映射中没有值z的键,而当我们使用运算符[]并在键值d中添加元素时,因为没有键在地图中值为“ d”时,它将在地图中插入具有键“ d”和值为“ SQL”的键-值对。