gpt4 book ai didi

c++ - 分别对两个 vector 进行排序?

转载 作者:太空狗 更新时间:2023-10-29 23:43:48 26 4
gpt4 key购买 nike

我必须制作一个使用以下两个 vector 的程序:-

vector<double> age;
vector<string> name;

我分别接受他们的意见。我必须制作一个函数 sort() 以便它按字母顺序对姓名进行排序,然后相应地重新组织年龄以匹配姓名。

请帮忙!!

最佳答案

如果您可以将它们分组在 struct 或等价物中,您可以为您排序的索引创建一个额外的 vector 并用于间接:

std::vector<double> ages = /**/;
std::vector<string> names = /**/;
// ages.size() == names.size()
std::vector<std::size_t> indexes(names.size());
std::iota(indexes.begin(), indexes.end(), 0u);
std::sort(indexes.begin(), indexes.end(), [&](std::size_t lhs, std::size_t rhs) {
return names[lhs] < names[rhs];
});

for (auto index : indexes) {
std::cout << names[index] << " has " << ages[index] << std::endl;
}

还有range-v3你可以这样做:

std::vector<double> ages = /**/;
std::vector<string> names = /**/;
auto zip = ranges::view::zip(names, ages);

ranges::sort(zip);

for (const auto& z : zip) {
std::cout << std::get<0>(z) << " " << std::get<1>(z) << std::endl;
}

Demo

关于c++ - 分别对两个 vector 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41035472/

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