您可以用std::sort輕鬆做到這一點。你需要提供一個自定義比較器,但那不是問題。
它容易得多,如果你使用std::array來定義您的2維數組,雖然如下:
std::sort(twoDArray.begin(), twoDArray.end(), [](const std::array< int, 2 >& a, const std::array< int, 2 >& b)
{
return a[1] < b[1];
}
做同樣具有C-:
std::array< std::array< int, 2 >, 4 > twoDArray;
如下然後,您可以對它進行排序樣式數組仍然是可能的,但是需要實現一個自定義迭代器,該迭代器一次將整個「行」推進,因爲標準迭代器(即指針)會將2D數組視爲1D。
下面是使用C++陣列一個完整的例子:
std::array< std::array< int, 2 >, 4 > arr = {{ { 1, 4 },
{ 2, 3 },
{ 3, 2 },
{ 4, 1 } }};
std::sort(arr.begin(), arr.end(), [](const std::array< int, 2 >& a, const std::array< int, 2 >& b)
{
return a[0] < b[0];
});
std::sort(arr.begin(), arr.end(), [](const std::array< int, 2 >& a, const std::array< int, 2 >& b)
{
return a[1] < b[1];
});
來源
2014-12-02 09:39:56
Goz