矢量值的不同组合

shn*_*shn 0 c++ vector superset

假设我有一个n值的向量,我想得到它的值的不同组合,例如:如果我有vect = [a,b,c]我想要的不同组合是:[a,b,c] ,[a,b],[a,c],[b,c],[a],[b],[c]

请注意,例如[a,b]与[b,a]相同,因此我不需要同时保留它们.

Hen*_*rik 6

02^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开始计数.