问题描述
在这段代码中,我用从 alpha
到 'a'
的字母填充向量 'z'
:
std::vector<char> alpha(26);
std::iota(alpha.begin(),alpha.end(),'a');
我假设这不适用于所有字符编码,有人可以确认吗?还是否认?
如果前者属实,有没有可靠的替代方案?
解决方法
std::iota 的行为非常简单:
用依次递增的值填充范围 [first,last)
,从 value
开始并重复计算 ++value
。
这意味着您的代码仅在编码表示字符 'a'
,'b'
... 'z'
升序时有效。 ASCII 编码就是这种情况,因此您的代码将适用于这种情况。对于任何其他编码,如果这些字符没有增加,或者在 'a'
和 'z'
之间散布着其他字符,这将不起作用。