我想使用 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 之前使用类型转换字母?
或者有没有更有效的方法?
请注意,您的代码依赖于对字母进行连续编码的字符编码方案,例如 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)
如果你有一个包含所有字母的字符串,那么也许你甚至不需要向量。
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |