通过std :: unique_ptr使用std :: map访问operator []的正确语法

Viv*_*vit 1 c++ stdmap unique-ptr c++11 c++14

我的问题很简单.我google了很多,但不知怎的,我无法弄明白.我使用的是C++ std::mapstd::unique_pointer这样的:

std::unique_ptr<std::map<int,std::string>> my_map( new std::map<int,std::string>());
Run Code Online (Sandbox Code Playgroud)

现在,我想使用[]地图的访问运算符.但我总是遇到编译器错误.

my_map[1] = "XYZ";    // error C2676
my_map->[1] = "XYZ";  // error C2059
Run Code Online (Sandbox Code Playgroud)

如果没有std::unique_ptr,我的代码将如下所示,并且它的工作原理.但是我如何做同样的事情std::unique_ptr呢?请帮我.

std::map<int,std::string> my_map;
my_map[1] = "XYZ";   // OK!
Run Code Online (Sandbox Code Playgroud)

现代C++是受欢迎的,甚至是期望的.

For*_*veR 11

手动调用操作员功能

my_map->operator[](1)
Run Code Online (Sandbox Code Playgroud)

或取消引用指针和调用 operator []

(*my_map)[1]
Run Code Online (Sandbox Code Playgroud)