使用 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'
之间散布着其他字符,这将不起作用。
在这段代码中,我用从 '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 withvalue
and repetitively evaluating++value
.
这意味着您的代码仅在编码以递增顺序表示字符 'a'
、'b'
... 'z'
时有效.这是 ASCII 编码的情况,因此您的代码将在这种情况下工作。对于任何其他编码,如果这些字符没有增加,或者在 'a'
和 'z'
之间散布着其他字符,这将不起作用。