我想根据第一行的数据快速排序多维向量。有办法做到这一点(see answers to this post),但我正在寻找一种快速有效的方式,而不使用C++ 11(即提供的第二个解决方案,我想避免创建和复制向量的成本)。我试图看看Boost是否具有像C++ 11那样的很好的排序功能,但是我是C++的新手,无法弄清楚。从本质上讲,我有一个看起来像数据:按第一列排序多维向量
std::vector<std::vector<double> > data(2, std::vector<double>(5, 0.0));
data[0][0] = 2.0; data[1][0] = 4.0;
data[0][1] = 1.0; data[1][1] = 6.0;
data[0][2] = 3.0; data[1][2] = 5.0;
data[0][3] = 2.1; data[1][3] = 3.3;
data[0][4] = 0.3; data[1][4] = 5.7;
,我想对数据进行排序,使我有
data[0][0] = 0.3; data[1][0] = 5.7;
data[0][1] = 1.0; data[1][1] = 6.0;
data[0][2] = 2.0; data[1][2] = 4.0;
data[0][3] = 2.1; data[1][3] = 3.3;
data[0][4] = 3.0; data[1][4] = 5.0;
请注意,我用的载体,因为我不知道数据的尺寸事先,但是数据将是矩形的并且比这里提供的2x5示例大得多。
你你可以编写你自己的比较函子,并利用['std :: sort()'](http://en.cppreference.com/w/cpp/algorithm/sort)无论如何,Boost也不是必需的,请参阅提供的链接中的(2)选项,以了解如何完成此工作。 – WhozCraig
您是否总是在内部使用3个元素的向量?为了只存储三个双精度值(固定数量,小尺寸)'std :: vector'可能是过度的和昂贵的 –
你确定最后一个块中描述的数字是你期望的吗?根据第一列的数据没有排序* –