【发布时间】:2013-08-01 22:06:37
【问题描述】:
这源自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)
【问题讨论】:
-
for(auto&& c : S):) -
@Rapptz:这不是通用的。你还有
CHAR_MIN。 -
我也花时间使 CHAR_MIN/MAX 位通用stackoverflow.com/a/18016752/85371
标签: c++ char type-conversion