-2
私は2つのベクトルベクトルaとベクトルbを持ち、a [i]/b [i]> a [i + 1]/b [b +1]。 C++でコードを実装するにはどうすればよいですか?条件付きのC++を使って2つのベクトルをソートする
私は2つのベクトルベクトルaとベクトルbを持ち、a [i]/b [i]> a [i + 1]/b [b +1]。 C++でコードを実装するにはどうすればよいですか?条件付きのC++を使って2つのベクトルをソートする
は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の回答を使用して、a
とb
のそれぞれをinds
に従って並べ替えます。
この問題を解決するために作成したプログラムを共有できますか? – Nik