用英文字母初始化矢量

时间:2018-03-10 14:47:35

标签: c++ vector initialization

我们可以有一个大小为26的char矢量,用英文字母初始化吗?我们可以立刻初始化这个载体吗?

4 个答案:

答案 0 :(得分:5)

是的,你可以。您可以使用std::iota和从字母A开始的ASCII字符排序轻松完成此操作。

#include <iostream>
#include <numeric>
#include <vector>

int main()
{
    std::vector<char> alphabet(26);
    std::iota(alphabet.begin(), alphabet.end(), 'A');

    for (const auto& i : alphabet)
    {
        std::cout << i << std::endl;
    }
    return 0;
}

答案 1 :(得分:1)

Reader

答案 2 :(得分:1)

迂腐,&#34;初始化&#34;正在创建一个对象,以便在没有它保持其预期值的情况下无法访问它,

std::vector<char> englishAlphabetUpper({ 
    'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 
    'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'});

不确定为什么你想要一个明确定义的值的矢量,比如英文字母作为大写字母。这是一个不可改变的概念,所以像

这样的不可变对象
const char englishAlphabetUpper[] = {
    'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 
    'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};

应该更好。

答案 3 :(得分:1)

这是汤姆·布洛杰特(Tom Blodget)的回答。这是初始化向量的另一种语法。我认为这是C ++ 11中引入的。我更喜欢这种语法。 :)

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<char> U = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};

    for (int i = 0; i < U.size(); i++)
    {
        cout << U[i] << ", ";
    }
    cout << "\b\b." << endl;

    return 0;
}