我们可以有一个大小为26的char矢量,用英文字母初始化吗?我们可以立刻初始化这个载体吗?
答案 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;
}