C++ (c+;+;)可以';t在键哈希函数中迭代向量
我试图实现,比如说一个整数向量:C++ (c+;+;)可以';t在键哈希函数中迭代向量,c++,hash,iterator,C++,Hash,Iterator,我试图实现,比如说一个整数向量: struct Key { std::vector<int> vec; bool operator==(const Key &other) const { return (vec == other.vec); } }; struct KeyHasher { std::size_t operator()(const Key& k) const { using std::size_t; std::s
struct Key
{
std::vector<int> vec;
bool operator==(const Key &other) const
{ return (vec == other.vec); }
};
struct KeyHasher
{
std::size_t operator()(const Key& k) const
{
using std::size_t;
std::size_t res = 0;
std::vector <int>::iterator i;
for (i = k.vec.begin(); i != k.vec.end(); ++i)
{/* hash code */}
return res;
}
};
被g++拒绝:
'no match for operator=' (operand types are 'std::vector<int>::iterator [...]'
“运算符=”不匹配(操作数类型为“std::vector::iterator[…]”
发生了什么?在另一个上下文中,这个语法是可以的:我的错误在哪里?
i
需要是const\u迭代器
:k
,因此k.vec
在这里是const
。(更好的方法是使用auto
)i
需要是const\u迭代器
:k
,因此k.vec
在这里是const
。最好使用auto
。尝试使用const\u迭代器而不是迭代器。
k是常数
std::vector <int>::const_iterator i;
std::vector::const_迭代器i;
否则,您将需要删除常量…尝试使用常量迭代器而不是迭代器。 k是常数
std::vector <int>::const_iterator i;
std::vector::const_迭代器i;
否则,你需要删除常量……/P>记住AutoC++C++ 11,所以如果你使用一个旧的编译器,那么SistyTyrAtter将是你唯一的选择。的确,STD::vector::SistaIdulter I;做这个把戏,谢谢……或者更好的是(Audii=K.VEC.NeX);i!= k.VEC.Enter();++i)如果没有使用任何其他的声明,请记住AutoC++是C++ 11的特性,所以如果你使用的是旧编译器,那么SistyTyrAtter将是你唯一的选择。没有任何其他声明。谢谢,我不知道常量迭代器。谢谢,我不知道常量迭代器。