微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用 std::iota 填充字母向量

在这代码中,我用从 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' 之间散布着其他字符,这将不起作用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。