gpt4 book ai didi

c++ - 通过 char 字符串的最佳迭代

转载 作者:搜寻专家 更新时间:2023-10-31 01:08:27 25 4
gpt4 key购买 nike

这源自other question .如果我们有:

const std::string& S = ...;
int freq[CHAR_MAX-CHAR_MIN+1]={0};

以下四个循环是否等价?你更喜欢什么?

for (int           c: S) ++freq[c-CHAR_MIN];  // (1)
for (char c: S) ++freq[c-CHAR_MIN]; // (2)
for (unsigned c: S) ++freq[c]; // (3) <-- BAD!
for (unsigned char c: S) ++freq[c]; // (4)

最佳答案

2 是最佳选择,因为它清楚地展示了您打算使用每个字符的用途(很简单:作为一个字符)。该含义在 1、3 和 4 中丢失。正如 Rapptz 所提到的,如果您有支持它的编译器(C++11 标准),您也可以使用 for (auto c : S)

此外,将 char 存储在 int (1)、unsigned int (3) 或 unsigned char (4) 中没有意义,因为它们可以存储大于 char 的值。

关于c++ - 通过 char 字符串的最佳迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18005473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com