如何打印所有组合?

时间:2016-06-17 03:47:14

标签: c++

我刚刚开始学习C ++。我必须创建一个包含1000个名字的数组。我的想法是首先创建一个包含10个名称的数组,然后排列名称以生成1000.但是,我不知道如何创建第一个数组(我想它是一个字符串数组,但我不知道我的语法是否正确),并且我不知道如何进一步排列名称以形成更大的数组。有谁可以帮助我?

1 个答案:

答案 0 :(得分:1)

对于小固定大小的数组,优先使用std::array标题中的<array>。对于字符串,请使用std::string标题中的std::wstring(或<string>}。对于固定的值列表,请使用花括号初始值设定项。

因此,对于10个名称的数组,例如

#include <array>

const std::array< std::string, 10 > basic_names =
{
    "alfa",
    "beta",
    // and so on
};

1000个名称的数组开始变大,然后优先使用std::vector标题中的<vector>。它也很好,因为它可以调整大小。您只需通过push_back方法附加新项目。

所以,例如。

auto computed_names()
    -> std::vector< std::string >
{
    std::vector< std::string > result;
    for( auto& name1 : basic_names )
        for( auto& name2 : basic_names )
            for( auto& name3 : basic_names )
            {
                result.push_back( name1 + " " + name2 + " " + name3 );
            }
    return result;
}

const std::vector< std::string > names = computed_names();

免责声明:编码器甚至没有看过代码。