gpt4 book ai didi

c++ - 如何根据另一个 vector 对一个 vector 进行排序?

转载 作者:行者123 更新时间:2023-11-28 06:40:44 27 4
gpt4 key购买 nike

我有几个数据类型相同的 vector 。

   v  < int > = {5,4,1,2}
v2 < int > = {2,4,3,5,1,6,8,7}
v3 < int > = {1,4,2,3}

有任何方法可以根据 vector v 使用 C++ 的 STL(算法) 对 vector v2 、 v3 ... 进行排序

排序后 v2 将是 {5,4,1,2,3,6,7,8} 当它相对于 v 排序时 v3 将是 {4,1,2,3} 当它相对于 v 排序时到 v.

Edit:

可能有些人不清楚。让我解释一下..
排序后的 vector 有两部分,一部分是 A,另一部分是 B。
A 包含 vector v 的元素,即 A 是 v 的子集,它遵循与 v
中相同的顺序B 包含给定 vector (v_i) 的剩余元素 {v_i - A} 并且已排序。
所以对于排序后的 vector v2 将是

 v2 = A union B
A = {5,4,1,2}
B = {3,6,7,8}

最佳答案

class StrangeComparison {
public:
StrangeComparison(const vector<int>& ordering) : ordering_(ordering) {}
bool operator()(int a, int b) const {
auto index_a = find(ordering_.begin(), ordering_.end(), a);
auto index_b = find(ordering_.begin(), ordering_.end(), b);
return make_pair(index_a, a) < make_pair(index_b, b);
}
private:
const vector<int>& ordering_;
};

sort(v2.begin(), v2.end(), StrangeComparison(v));

Working example .提高效率留给读者作为练习(提示:查看 std::find 调用)。

关于c++ - 如何根据另一个 vector 对一个 vector 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26025234/

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