使用std :: map.insert("xyz")或只是map [ind] ="xyz"时使用insert函数有什么区别

use*_*514 4 c++ arrays stl insert map

在下面的例子中,使用1)与2)的优缺点是什么.是否有任何内存分配优势,任何好处,如果没有空间不足?

map <  int, string> Employees;  



  // 1) Assignment using array index notation  

   Employees[5234] = "Mike C.";  

  // 2) Assignment using member function insert() and STL pair  

    Employees.insert(std::pair<int, * char>(1923,"David D."));  
Run Code Online (Sandbox Code Playgroud)

Nim*_*Nim 5

第一个用键5234创建一个映射,并返回对那里保存的字符串的引用,"Mike C"被分配给它 - 重要的一点是,如果该键已经存在,这将覆盖该键的值(因为引用返回值).

第二种方法检查密钥是否存在,如果密钥已存在则不会覆盖.

至于内存分配,如果映射不存在,两者都会将地图大小增加1.以上是两种方法AFAIK的唯一区别.