我正在遍历 chars
数组以进行一些操作。如果有两个相同的相邻字符,我想“跳过”一次迭代。
例如x112abbca
跳过------------^
我有一些代码,但它并不优雅,想知道是否有人能想出更好的方法?我在 switch
语句中有一些 case
,如果我不必在 切换
。
switch(ent->d_name[i])
{
if(i > 0 && ent->d_name[i] == ent->d_name[i-1])
continue;
case ' ' :
...//code omited
case '-' :
...
}
顺便说一句,一位讲师曾经告诉我“避免continue
,除非需要很多代码来替换它们”。有人支持吗? (实际上他对 break
也是这么说的)
最佳答案
把 if
外面switch
.
虽然我不反对使用 continue
和 break
,这次您当然可以绕过它们,根本不需要很多代码:只需还原条件并将整个 switch 语句放在 if block 中。
回答修正后的问题:什么是干净的取决于很多因素。这个字符列表要考虑多长时间:你应该自己迭代它们,还是使用来自 <algorithm>
的实用函数? ?无论如何,如果您多次引用同一个字符,也许您应该给它起一个别名:
std::string interesting_chars("-_;,.abc");
// ...
for (i...) {
char cur = abc->def[i];
if (cur != prev || interesting_chars.find(cur) == std::string::npos)
switch (current) // ...
关于c++ - 如果前一个字符相同则跳过数组中的一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12166328/