gpt4 book ai didi

c++ - 包含地址的排序 vector

转载 作者:太空宇宙 更新时间:2023-11-04 11:35:48 25 4
gpt4 key购买 nike

我有一个名为 Entry 的结构,它包含两个字符串和一个 int:

struct Entry
{
string id, name;
int age;
};

我有一个包含一堆 Entry 的 vector ,另一个 vector 包含第一个 vector 中 Entry 的地址。

vector 1:

vector<Entry> table1

vector 2:

vector<Entry*> table2

我希望能够根据表 1 中项目的 ID 对表 2 进行排序。

我该怎么做呢?我尝试简单地使用排序功能..但那不起作用,因为我认为它只是按地址排序..这不是我想要的..

最佳答案

您可以将自定义比较器传递给 std::sort :

std::sort(table2.begin(), table2.end(), [](Entry* a, Entry* b) {
return a->id < b->id;
});

Live example

如果为了你的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; });

Live example

关于c++ - 包含地址的排序 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23096364/

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