如何以一种很好的方式生成向量矢量?

0 c++ initialization vector

我想有一个具有这个定义的函数:

vector<vector<int>> create_lists(int no_lists, int no_per_list)
Run Code Online (Sandbox Code Playgroud)

第一个参数是子列表的数量,第二个参数是每个子列表的项目数.每个列表应包含一系列整数的子范围,因此需要调用

create_lists(10,10); 
Run Code Online (Sandbox Code Playgroud)

将创建10个子列表,第一个从0到9,第二个从10到19,依此类推.

我已经完成了它的几个版本,但它们都感觉很笨拙.这样做有一种漂亮而优雅的方式吗?

Bar*_*rry 8

我很少有机会说"使用std::iota",所以我不会错过这个!

std::vector<std::vector<int>> create_lists(int no_lists, int no_per_list)
{
    std::vector<std::vector<int>> v(no_lists,
                                    std::vector<int>(no_per_list));

    for (int i = 0; i < no_lists; ++i) {
        std::iota(v[i].begin(), v[i].end(), no_per_list * i);
    } 

    return v;
}
Run Code Online (Sandbox Code Playgroud)