我有一个名为Entry的结构,它包含两个字符串和一个int:
struct Entry
{
string id, name;
int age;
};
我有一个包含一堆Entry的向量,另一个向量包含第一个向量中Entry的地址。
向量1:
vector<Entry> table1
向量2:
vector<Entry*> table2
我希望能够通过table1中项目的id对table2进行排序。
我该怎么做呢? 我只是尝试使用sort函数..但那不起作用,因为我认为它只是按地址排序..这不是我想要的..
答案 0 :(得分:1)
您可以将自定义比较器传递给std::sort
:
std::sort(table2.begin(), table2.end(), [](Entry* a, Entry* b) {
return a->id < b->id;
});
如果你的Entry
课程operator<
有意义,那么重载它并减少比较器的主体可能是一个好主意:
bool operator<(Entry const& a, Entry const& b) {
return a.id < b.id;
}
// …
std::sort(table2.begin(), table2.end(), [](Entry* a, Entry* b) { return *a < *b; });