gpt4 book ai didi

c++ - 无法为指针 vector 编译比较函数

转载 作者:行者123 更新时间:2023-11-28 00:28:08 25 4
gpt4 key购买 nike

我有以下设置:

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   

我不知道为什么它不能编译,我能找到的所有示例都带有比较函数,该函数传递给应用于指针 vector 的算法,看起来几乎相同。

最佳答案

std::max(controllers2d.begin(), controllers2d.end(), comp); 会比较迭代器(而 comp 会比较元素(指针在你的情况下)所以编译错误)。

std::max_element(controllers2d.begin(), controllers2d.end(), comp); 会比较指针(如 comp)。

关于c++ - 无法为指针 vector 编译比较函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24086677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com