无效使用二元运算符'<' C ++

时间:2015-01-04 02:12:26

标签: c++ c++11 hashmap operator-overloading

出于某些奇怪的原因,当我尝试循环遍历我的字符串向量

std::vector<Function> functionList;
std::vector<std::string> functionNames;

并尝试将它们存储在我的hash_map

std::hash_map<Function, std::string> functions;

我遇到10条错误消息,都告诉我我错误地使用了二元运算符&#39;&lt;&#39;。我像这样循环:

for (auto i = 0; i < buffer.functionSize; i++)
    {
        functions[buffer.functionList[i]] = buffer.functionNames[i];
    }
}

缓冲区对象是另一个存储std :: vectors的类。确切的错误消息发布在下面。有什么想法吗?

Error   1   error C2784: 'bool std::operator <(const std::vector<_Ty,_Alloc> &,const`std::vector<_Ty,_Alloc> &)' : could not deduce template argument for 'const std::vector<_Ty,_Alloc>`&' from 'const Function'

编辑:我将hash_maps更改为unordered_maps,现在我收到错误:

Error   1   error C2338: The C++ Standard doesn't provide a hash for this type.

0 个答案:

没有答案