【发布时间】:2014-06-06 16:31:04
【问题描述】:
我有以下设置:
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.0\VC\include\xutility 521 1
我不知道为什么它不能编译,我能找到的所有示例都通过比较函数传递给应用于指针向量的算法看起来几乎相同。
【问题讨论】:
-
我认为您的意思是
std::max_element而不是std::max。 -
我会去上吊。这正是我想要的,我什至从参考资料中查看了正确的功能。啊……
标签: c++ higher-order-functions stl-algorithm