按特定顺序重新排序列

时间:2013-11-24 13:23:12

标签: c++ algorithm c++11

我有一个2D数组,定义为:

using value_type = std::array<std::pair<int, QChar>, 4>;
std::vector<value_type> arr;

其中first是图书保留的列号(读作arr[col][j])。在形成数组时,列号按排序顺序(0, 1, 2, 3)分配。

用户在运行时可以输入必须重新排序数组的“规则”。例如:2, 0, 3, 1

目前我已将此(=上述重新排序规则)硬编码为:

for (auto& it : arr)
{
    std::swap(it[0], it[1]);
    std::swap(it[0], it[2]);
    std::swap(it[2], it[3]);
}

我希望让用户能够以各种方式重新排序; [3, 1, 0, 2], [0, 3, 2, 1],等等。我怎样才能做到这一点? :|

0 个答案:

没有答案