std::vector.push_back() C++

ane*_*ayf 3 c++ std

我想使用 push_back 函数用字母初始化一个向量。这是正确的方法吗?

vector<char> v;
char letter = 'A';
for(int i=0; i<26; i++)
{
    v.push_back(letter+i);
}
Run Code Online (Sandbox Code Playgroud)

有用。我只是想知道我是否应该在将 i 添加到 int 之前使用类型转换字母?

或者有没有更有效的方法?

Som*_*ude 7

请注意,您的代码依赖于对字母进行连续编码的字符编码方案,例如 ASCII。

如果该假设成立,您可以最初使用正确的大小创建向量,并用于std::iota初始化所有元素:

std::vector<char> v(26);  // Create a vector of 26 (default-initialized) elements
std::iota(begin(v), end(v), 'A');  // Assign a letter to each element in the vector
Run Code Online (Sandbox Code Playgroud)

如果您希望您的代码可移植到字母未连续编码的系统(如使用EBCDIC的系统),那么您最好明确使用字母创建一个字符串:

std::string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";  // Thanks Nathan Oliver :)
Run Code Online (Sandbox Code Playgroud)

如果你有一个包含所有字母的字符串,那么也许你甚至不需要向量。