次のブースト アルゴリズムを使用して、2D ベクトルを並べ替えています。
#include <vector>
#include <boost/algorithm/string.hpp>
using namespace std;
class StringListCompare
{
public:
explicit StringListCompare(int column) : m_column(column) {}
bool operator()(const vector<string>& lhs, const vector<string>& rhs)
{
// what do we do if lhs or rhs don't have (m_column + 1) elements?
return lhs[m_column] < rhs[m_column];
}
private:
int m_column;
};
int main()
{
std::vector <std::vector <std::string> > data;
std::vector <std::string> temp;
//
// Load 2D vector
sort(data.begin(), data.end(), StringListCompare(2));
//Print 2D vector after sorting by 2nd column
}
ここでは、引数として指定した 1 つの列のみでベクトルを並べ替えることができます。しかし、このベクトルを 2 列で並べ替えたいと思います。私の最初の列はソートされているはずです。最初の列の並べ替えに従って、2 番目の列でベクトルを再度並べ替えたいと思います。これどうやってするの ?
最初の列で最初に並べ替えてから、最初の列が等しいものを並べ替えて、2 番目の列で並べ替えたいですか?