【问题标题】:How to use string to string hash_map(hash_map<string, string, stringHashFunction> in Linux C++如何在 Linux C++ 中使用字符串到字符串 hash_map(hash_map<string, string, stringHashFunction>
【发布时间】:2012-01-28 23:10:04
【问题描述】:

我在 Ubuntu 中使用 GCC 定义了一个 hash_map stringHashMap。而且我保证 stringHashFunction 是正确的,因为我可以在 hash_map 中正确使用字符串

当我打电话时

string a = "sgsg";
string temp = stringHash[a];

编译器报告以下错误:

错误:传递 'const __gnu_cxx::hash_map, std::basic_string, StringHashFunctionStruct>' 作为 '_Tp& __gnu_cxx::hash_map<_key _tp _hashfn _equalkey _alloc>::operator[]( const key_type&) [with _Key = std::basic_string, _Tp = std::basic_string, _HashFn = StringHashFunctionStruct, _EqualKey = std::equal_to >, _Alloc = std::allocator >, __gnu_cxx::hash_map<_key _tp _hashfn _equalkey _alloc>::key_type = std::basic_string]' 丢弃限定符 [-fpermissive]

为什么会发生这种情况?我应该如何使用字符串到字符串 hashMap?

【问题讨论】:

    标签: c++ gcc


    【解决方案1】:

    [] 访问器可以修改映射,因此它不能是非常量。改用 find

    来自http://www.cplusplus.com/reference/stl/map/operator%5B%5D/

    注意最后一次访问(对元素 'd')如何在 具有该键并初始化为其默认值的映射(一个空的 string),即使访问它只是为了检索它的值。成员 函数 map::find 不会产生这种效果。

    【讨论】:

      【解决方案2】:

      stringHash 直接是const 或作为常量引用传递/存储。 operator[] 是一个非常量函数,因为它可能需要插入一个项目。如果您需要在 const 哈希容器中查找项目,只需使用 find 方法即可。

      【讨论】:

        猜你喜欢
        • 2013-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-07
        相关资源
        最近更新 更多