c++ - 在 std::vector 中,C++ 运算符==不存在?

  显示原文与译文双语对照的内容

class Map {


private:


 std::vector<std::string> key;


 std::vector<std::string> storage;


 int i;


public:


 Map();


 Map* set(std::string, std::string);


 std::string get(std::string);


};



Map::Map() {}


Map* Map::set(std::string k, std::string v) {


 key.push_back(k);


 storage.push_back(v);


 i++;


 return (this);


}


std::string Map::get(std::string k) {


 for (int k = 0; k <i; i++)


 if (key[i] == k)


 return storage[i];


}



我现在还在玩 C++ 和课程。 我还没有"已经研究"地图和向量,只读一些文档。 这个类没有作用,只是尝试一下,所以: 是,我知道类似于我在这里尝试实现的内容已经存在。

编译这里代码,我得到的是:

main: 32: 错误:'( Map* ) 中的'operator=='没有匹配项) -> Map::key 。 std::vector <: == _Tp,_Alloc map map map map map map map map map k k k k'

我是说,==算子不存在于向量中?

时间: 原作者:

原因是重影。你的int k 阴影你的参数 std::string k,因这里编译器看到字符串 ==,没有这样的比较器。

原作者:

你正在将 std::vector<string> key 中的字符串值与 int 进行比较。 这是不可能的。

( 注意,map 通常作为排序的二叉树实现)

原作者:
...