数0到2^vector.size() - 1.如果循环变量的第i位为1,则包括vector[i]在您的组合中.
vector<char> v;
v.push_back('a');
v.push_back('b');
v.push_back('c');
for (int counter = 0; counter < (1 << v.size()); ++counter)
{
vector<char> combination;
for (int i = 0; i < v.size(); ++i)
{
if (counter & (1 << i))
combination.push_back(v[i]);
}
// do something with combination
}
Run Code Online (Sandbox Code Playgroud)
编辑:如果要排除空集,请从1开始计数.