私はベクトルのベクトルを作成しました。私が定義したパラメータに基づいてそれらを並べ替えたいと思います。ここでは、sort()
関数は、vector<vector<int>>
として定義された変数データセットをただちにvector<int>
にします。誰かが間違っていることを説明できますか?なぜstd :: sortはstd :: vector <std :: vector <int>>をデフォルトでstd :: vectorにすると、間違った結果になるのですか?
さらに、上述の問題が分類された後でさえ、compare()
関数は、ハードコードされたインデックスに対してのみ機能します。異なる指標に基づいてソートしたいのであれば、どうすればいいですか?私が言及できる方法はありますか?
#include <iostream>
#include <vector>
#include <algorithm>
//void check_function(std::vector <std::vector <int> > *dataset)
//{
// std::cout<<(*dataset)[0].size()<<std::endl;
//}
bool compare(const std::vector <std::vector <int> > &a, const std::vector <std::vector <int> > &b)
{
return a[1] < b[1];
}
/* This works, but this sorts based on the first parameter of the vector rather than what I mention.
bool compare(const std::vector <int> &a, const std::vector <int> &b)
{
return a < b;
}
*/
int main()
{
std::vector <int> data;
std::vector <int> data2;
std::vector <std::vector <int> > dataset;
data.push_back(5);
data.push_back(10);
dataset.push_back(data);
data2.push_back(5);
data2.push_back(20);
dataset.push_back(data2);
// check_function(&dataset);
std::sort(dataset.begin(), dataset.end(), compare);
std::cout<< dataset[0][0]<<std::endl;
return 0;
}
問題ははstd、ない比較::一種です。 std :: vectorの2つのインスタンスを比較する比較を作成する必要があります。 –
rcgldr