gpt4 book ai didi

c++ - 根据不同大小和类型的另一个 vector 对点 vector 进行排序

转载 作者:行者123 更新时间:2023-11-28 07:21:02 24 4
gpt4 key购买 nike

为了进一步解决这个问题:order a vector of points based on another vector , 但两个 vector 有不同的类型。

我正在尝试根据另一个类型为 std::string 的 vector 来对类型为 struct Item 的 vector 进行排序。为此,我使用了 struct Item 的一个元素(std::string 类型的 ID),并将其与字符串 vector 进行比较。

struct myCompareStruct
{
std::vector<std::string> all;
std::vector<item> special;
myCompareStruct(const std::vector<std::string>& a, const std::vector<item>& s)
: all(a), special(s)
{
}
bool operator() (const std::string& i, const item& j)
{
return(i.compare(j.ID) == 0);
}
};

std::vector<std::string> all;
std::vector<item> special;

//fill your vectors
myCompareStruct compareObject(all,special);
std::sort(special.begin(), special.end(), compareObject);

但这给了我一个编译时错误:错误 C2664:“bool myCompareStruct::operator ()(const item&,const std::string &)”:无法将参数 1 从“item”转换为“const std::string &”

item.ID 是 std::string 类型。

最佳答案

您正在排序 std::vector<item>item但是你的谓词 myCompareStruct::operator()无法比较两个 item s,它比较 std::string和一个 item .你需要像这样写一个运算符

bool operator() (const item& x, const item& y) {
return x.ID.compare(y.ID)
}

为了在std::sort中使用它.或者,如果您的所有项目都可以转换为字符串,您可能需要定义从 item 的转换。至 std::string因此

item::operator std::string() const {return ID}

关于c++ - 根据不同大小和类型的另一个 vector 对点 vector 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19474212/

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