使用带条件的c ++对两个向量进行排序

时间:2016-10-04 06:25:04

标签: c++ c++11

我有两个向量矢量a和向量b,我想用a [i] / b [i]> a [i + 1] / b [b + 1]的条件对它们进行排序。我如何在C ++中实现代码?

1 个答案:

答案 0 :(得分:3)

假设您从

开始
android { 
    ....
    aaptOptions {
        cruncherEnabled = false
    }
    ....
}

创建索引向量#include <vector> #include <algorithm> int main() { std::vector<int> a{2, 7, 3}; std::vector<int> b{4, 2, 1};

inds

还会创建一个比较函数来描述您问题中的条件:

    std::vector<std::size_t> inds;
    for(std::size_t i = 0; i < a.size(); ++i)
        inds.push_back(i);

按照它排序:

    auto cmp = [&](std::size_t lhs, std::size_t rhs) {
        return static_cast<double>(a[lhs]) / b[lhs] > static_cast<double>(a[rhs]) / b[rhs];
    };

此时, std::sort(std::begin(inds), std::end(inds), cmp); } 将根据您的条件进行整理。

最后,使用reorder a vector using a vector of indices中的答案,根据indsab中的每一个进行重新排序。

相关问题