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.cpp:32:エラー:'((Map *)this)-> Map::keyの'operator=='に一致しません。std :: vector <_Tp、_Alloc> :: operator [] [with _Tp = std :: basic_string、std :: allocator>、_Alloc = std :: allocator、std :: allocator >>](((long unsigned int) ((Map *)this)-> Map :: i))== k '
つまり、実際には==演算子がベクトルに存在しないということですか?