【发布时间】:2015-07-29 09:39:04
【问题描述】:
我的问题很简单。我用谷歌搜索了很多,但不知何故我无法弄清楚。我使用 C++ std::map 和 std::unique_pointer,如下所示:
std::unique_ptr<std::map<int,std::string>> my_map( new std::map<int,std::string>());
现在,我想使用地图的访问运算符[]。但我总是遇到编译器错误。
my_map[1] = "XYZ"; // error C2676
my_map->[1] = "XYZ"; // error C2059
没有std::unique_ptr,我的代码将如下所示,并且可以正常工作。但是我如何通过std::unique_ptr 做同样的事情?请帮帮我。
std::map<int,std::string> my_map;
my_map[1] = "XYZ"; // OK!
现代 C++ 是受欢迎的,甚至是需要的。
【问题讨论】:
-
请注意,还有
at()方法,使用指针可能更“优雅”,my_map->at(1)
标签: c++ c++11 c++14 unique-ptr stdmap