我想有一个具有这个定义的函数:
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,依此类推.
我已经完成了它的几个版本,但它们都感觉很笨拙.这样做有一种漂亮而优雅的方式吗?
我很少有机会说"使用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)