使用 std::iota 填充字母向量

Using std::iota to fill an alphabet vector

在这段代码中,我用从 'a''z' 的字母填充向量 alpha:

std::vector<char> alpha(26);
std::iota(alpha.begin(), alpha.end(), 'a');

我假设这不适用于所有字符编码,有人可以确认吗?还是否认?

如果前者是真的,还有其他可靠的选择吗?

std::iota的行为很简单:

Fills the range [first, last) with sequentially increasing values, starting with value and repetitively evaluating ++value.

这意味着您的代码在编码以递增顺序表示字符 'a''b' ... 'z' 时有效.这是 ASCII 编码的情况,因此您的代码将在这种情况下工作。对于任何其他编码,如果这些字符没有增加,或者在 'a''z' 之间散布着其他字符,这将不起作用。