c++ - 访问 unordered_maps 作为指针

标签 c++ std unordered-map

出于某种原因,我在编辑我的 unordered_map 中的值时遇到了问题,并且想知道我做错了什么。

在下面的代码中,参数是一个结构体。出于某种原因,以下代码抛出语法错误,不喜欢 [.

void MyClass::setParameter(string name, parameter param) {
    if (this->param_name_to_data == nullptr) {
        //create it lazily
        this->param_name_to_data = new unordered_map<string, parameter>();
    }
    this->param_name_to_data->[name] = param;
}

对应.h文件中声明的字典id为:

private:
 std::unordered_map<std::string, parameter> * param_name_to_data = nullptr;

我做错了什么?

最佳答案

param_name_to_data->[name] = param; 不是有效语法

当编译器看到 -> 时,它会查找成员变量或成员函数。语句 ->[...] 没有意义,因为单独的 [] 既不是成员变量也不是函数。

你可以改写

(*param_name_to_data)[name] = param;

或者先将指针指向引用

auto& map = *param_name_to_data;
map[name] = param;

你也可以使用丑陋的文字形式

param_name_to_data->operator[] (name) = param

但是最后一个不鼓励。

关于c++ - 访问 unordered_maps 作为指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36391762/

相关文章:

c++ - 投影:取STL容器的数据成员地址可以吗?

C++ CRTP派生类对象切片

c++ - 在 C++ 中定义简单宏时出错

c++ - 顺序序列容器或如何打包 vector

c++ - std::any 跨越 mingw 中的共享库边界

c++ - 未显示 libstdc++-v3 中的 GCC 源代码修改

c++ - 访问派生类中的成员模板函数中的元素时,unordered_map 的性能低下

iphone - 如何在应用程序中间重新初始化我无法完全控制的单例?

c++ - 我的静态 map 总是空的

c++ - 循环 std::unordered_map,序列总是我插入元素的序列?