如何从std :: vector <std :: vector <std :: tuple >>>生成类似于'n Choose r'的组合?

时间:2019-04-03 20:16:24

标签: c++

我想得到一些类似于“ x select 3”的东西。例如

[1, 2, 3, 4] choose 3
-> [1,2,3]
-> [1,2,4]
-> [1,3,4]
-> [2,3,4]

现在有几种方法可以做到,但是我想对这样定义的变量做类似的事情

std::vector<std::vector<std::tuple<int, int, int>>> v;

但是我想选择整个类型

std::vector<std::tuple<int, int, int>>>

所以人们可以将其视为

std::vector<a> choose 3

环顾四周,我发现这里可以提供一些帮助。特别是for_each_reversiable_permutation

我认为用法是

for_each_reversible_permutation(v.begin(), v.begin() + r, v.end(), f(v.size()));

在我的情况下应该是

for_each_reversible_permutation(v.begin(), v.begin() + 5, v.end(), v.size());

尽管我不确定,因为那行不通。

我也不知道是否有一种更快的更具体的方式来生成std::vector的组合

0 个答案:

没有答案