在这个函数中,我想在 vector 队列中搜索“vertex”。
bool PriorityQueue::contains(VertexPriority vertex) const {
return (std::find(queue.begin(), queue.end(), vertex) != queue.end());
}
vector 队列是这个对象的一个实例:
std::vector<VertexPriority> queue;
我的运算符重载是这样的:
bool operator==(const VertexPriority& v){ return (v.vertex == vertex); }
我该如何解决这个错误?
出现的错误是下一个错误,在每个错误的开头都有以下路径:
C:\Dev-Cpp\include\c++\3.4.2\bits\stl_algo.h
In function `_RandomAccessIterator std::find(_RandomAccessIterator, _RandomAccessIterator, const _Tp&, std::random_access_iterator_tag) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Tp = VertexPriority]':
instantiated from `_InputIterator std::find(_InputIterator, _InputIterator, const _Tp&) [with _InputIterator = __gnu_cxx::__normal_iterator > >, _Tp = VertexPriority]'
passing
const VertexPriority' as
this' argument of `bool VertexPriority::operator==(const VertexPriority&)' discards qualifiers
最佳答案
使运算符为常量:
bool operator==(const VertexPriority& v) const
{
return (v.vertex == vertex);
}
请注意,这会使成员函数 const
本身,这使编译器能够在 VertexPriority
类型的 const
对象上调用它。
这实际上正是编译器所说的:
passing const VertexPriority' as this' argument of `bool VertexPriority::operator==(const VertexPriority&)' discards qualifiers
const 的VertexPriority
对象作为隐式this
参数 传递给成员函数。
关于c++ - std::find 对象 vector 上出现的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19743455/