2

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

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

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

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

4

1 回答 1

3

std::iota的行为非常简单:

[first, last)用顺序增加的值填充范围,从 开始value并重复评估++value

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

于 2021-03-26T14:43:07.237 回答