C ++ - 将一维数组排序为二维数组,数组在一个范围内

时间:2018-05-11 18:07:48

标签: c++ arrays sorting

我的一维数组例如:{21,23,24,45,43,63,65,66}。

输出数组应为:{{21,23,24},{45,43},{63,65,66}}

是否有可能编写一种算法,在1-dim数组中对1-dim数组进行排序,其中子数组中的数字在例如10的范围内。对于该问题,使用向量可能更好吗? / p>

1 个答案:

答案 0 :(得分:1)

假设您使用地图< int,vector< int>>你可以这样做:

#include <map>
#include <vector>

using bucket = std::map<int, std::vector<int>>;

bucket ToBucket(const std::vector<int>& input)
{
    bucket res;
    for (const auto& i : input)
    {
        res[i/10].push_back(i);
    }
    return res;
}

之后你可以对矢量中的数字进行排序......