私はDoubleVectorのようなものを実装したいと思います。 このクラスでは、v1_をソートするソートメソッドを実装したいと思います。また、v1_の変更に応じて、v2_の順序も変更されます。 コード以下の通りです:最初のベクトルの変化に応じてソートダブルベクトルはどのようにソートされますか?
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
class DoubleVector
{
vector<int> v1_;
vector<char> v2_;
public:
void sort()
{
//sort v1_ and also change order in v2_ according to changes in v1_
std::sort(v1_.begin(), v1_.end() /*, lambda ?*/);
}
void add(int value_v1, char value_v2)
{
v1_.push_back(value_v1);
v2_.push_back(value_v2);
}
void print()
{
const auto size = v1_.size();
for (size_t i=0;i<size;++i)
{
cout << v1_[i] << " " << v2_[i] << endl;
}
}
};
int main()
{
DoubleVector dv;
dv.add(6, 'g');
dv.add(2, 'r');
dv.add(3, 'y');
dv.add(4, 'a');
cout << "Before sort:" << endl;
dv.print();
dv.sort();
cout << "After sort:" << endl;
dv.print();//the values in v2_ are in the same order they don't change order according to v1_ changes
return 0;
}
あなたがDoubleVectorを見ることができるようにする前にソート含まれています
6 g
2 r
3 y
4 a
そして、ソート後に含まれています
2 g
3 r
4 y
6 a
私が取得したいと思います:
2 r
3 y
4 a
6 g
したがって、最初のベクトルv1_はソートされていますが、2番目のベクトルは同じ順番になっており、2番目のv2_ベクトルの要素の順序をv1_の変更に従って変更したいと考えています。 私はそれを書くことができますが、おそらくstd :: sort関数の第3引数としてラムダを使用して、高速かつクリーンな方法でそれをやりたいのですか? DoubleVectorクラスのベクトルv1_およびv2_はそのままでなければなりません。
ありがとうございました。
'ソートv1_とv2_でv1_順序の変化に応じても、あなたがソートにしたい、彼らは私が混乱していますare.'のようなベクターは、クラスDoubleVectorでv1_とv2_が滞在しなければならない' change.'ますv1_とv2_を修正するか、新しいDoubleVectorを返すようにしますか? – Enfyve