为了进一步解决这个问题:根据另一个向量订购一个点向量,但两个向量都有不同的类型。
我正在尝试基于另一个 std::string 类型的向量来订购具有 struct Item 类型的向量。为此,我使用了 struct Item 的一个元素(类型为 std::string 的 ID),并将其与字符串向量进行比较。
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);
但这给了我一个编译时错误: error C2664: 'bool myCompareStruct::operator ()(const item&,const std::string &)' : cannot convert parameter 1 from 'item' to 'const std::string & '
item.ID 是 std::string 类型。