【发布时间】:2014-07-25 20:12:20
【问题描述】:
在下面的代码中,目的是对vector<Grid> gr的每个元素组合调用foo。是否有内置的 STL 功能,或者如果没有,对于大型容器,最好的方法是什么?请注意,由于grid[0] 也会影响grid[1],因此grid[1] 不应调用grid[0] 上的函数。所以,没有排列,只有组合。顺便说一句,this post 没有回答我的问题。
#include <iostream>
#include <vector>
using namespace std;
struct Grid
{
void foo (Grid& g) {}
};
int main()
{
vector<Grid> gr(3);
gr[0].foo (gr[1]);
gr[0].foo (gr[2]);
gr[1].foo (gr[2]);
return 0;
}
【问题讨论】:
-
也许你可以用
std::next_permutation做某种魔法 -
这是两个嵌套迭代,使用
for循环或std::for_each。 -
哦!哦!我已经做到了!现在我只需要找到它!
标签: c++ c++11 stl combinations stdvector