如何使C ++函数返回char数组的所有排列的向量

时间:2013-11-04 08:29:56

标签: c++ arrays vector

我对C ++编程没有多少经验,我想做的是以下内容:

1)创建一个以char数组作为输入的函数(例如'abb')

2)该函数将计算char数组的所有预表达并将它们存储在向量

3)该函数将返回char数组的向量

有人能给我一个快速的例子,说明如何在C ++中完成这项工作?我用谷歌搜索但我无法找到我正在寻找的东西:P

例如,输入为'abb',函数将返回包含char数组的向量:'abb','bab'和'bba'

1 个答案:

答案 0 :(得分:3)

您可以使用next_permutation

std::vector<std::vector<char>> p(std::vector<char> v)
{
    std::vector<std::vector<char>> result;

    std::sort(v.begin(), v.end());
    do
    {
        result.push_back(v);  // result.emplace_back(v);
    }
    while(std::next_permutation(v.begin(), v.end()));

    return result;
}

使用:

auto v = p({'a','b','c'});

for (auto &c : v)
{
    for (auto &x : c)
        cout << x;
    cout << "\n";
}

输出:

abc
acb
bac
bca
cab
cba