2016-10-04 4 views

答えて

3

inds、インデックスのベクトルを作成し、あなたが

#include <vector> 
#include <algorithm> 

int main() { 
    std::vector<int> a{2, 7, 3}; 
    std::vector<int> b{4, 2, 1}; 

で始まる言う:

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); 
} 

この時点で、indsはあなたの基準に従って整理されます。

最後にreorder a vector using a vector of indicesの回答を使用して、abのそれぞれをindsに従って並べ替えます。

関連する問題