无法为指针向量编译比较函数
Cannot compile comparison function for vector of pointers
我有以下设置:
std::vector<Data2DController*> controllers2d; // this is defined in the header
bool comp(const Data2DController* c1, const Data2DController* c2) {
return true;
};
inline std::vector<Visualizer*> MainController::gatherVisualizers() const {
std::vector<Visualizer*> visualizers;
// selected only the biggest cooridante system
Data2DController* biggestRadiusController = *std::max(controllers2d.begin(), controllers2d.end(), comp);
visualizers.push_back(biggestRadiusController->getCoordinatesVisualizer());
return visualizers;
}
目前我的函数看起来是这样的,为了简单起见,其他的都被注释掉了。
不幸的是,我得到以下错误(两个输入参数有4个相同的错误):
Error 5 error C2664: 'bool (Controllers::Data2DController *,Controllers::Data2DController *)' : cannot convert argument 1 from 'const std::_Vector_const_iterator<std::_Vector_val<std::_Simple_types<Controllers::Data2DController *>>>' to 'Controllers::Data2DController *' C:Program Files (x86)Microsoft Visual Studio 12.0VCincludexutility 521 1
我不知道为什么它不编译,我能找到的所有例子与比较函数传递的算法应用于指针的向量看起来几乎相同。
std::max(controllers2d.begin(), controllers2d.end(), comp);
将比较迭代器(comp
将比较元素(在您的例子中是指针),因此编译错误)。
std::max_element(controllers2d.begin(), controllers2d.end(), comp);
将比较指针(如comp
)。
std::max
返回两个值之间的最大值,它不是容器算法。
使用std::max_element
查找范围的最大值
*std::max_element(controllers2d.begin(),controllers2d.nd(),comp)
相关文章:
- std::less是否应该允许在编译时比较不相关的指针?
- 将 ProcessEntry32.szExeFile 与用户输入的数据进行比较时,C++ _wcsicmp代码未编译
- 具有多个空成员的 std::元组上的比较无法在 GCC 上编译
- 在将迭代器与C 中的null进行比较时,编译误差
- C++编译错误(有符号和无符号整数表达式之间的比较)
- C++使用make_heap和配对比较器编译错误
- 在命名空间中使用自己的类比较 std::vector 不会编译
- 比较编译时类型的大小
- 在 C++11 中编译时以词典方式比较两个字符串
- 类中的比较函数为 std::sort 无法编译
- 编译双重比较函数'IsAlmostEqual'时出现 Emscripten 错误
- Visual Studio 2010 与 2012 编译时性能和稳定性比较,适用于C++用户
- c ++比较std::string将无法工作,如果我不使用Code::Blocks但cygwin编译
- 我可以将编译时字符串比较与 MPL 模板混合使用吗?
- qsort比较编译错误
- C++在编译时比较模板类型
- C++指针与整数比较编译错误
- c++指针比较器未编译
- 自定义排序比较函数抛出编译错误
- 无法为指针向量编译比较函数