循环设计:计数和后续代码复制
Loop Design: Counting & Subsequent Code Duplication
Accelerated C++中的练习3-3让我想到了关于循环设计的两个更广泛的问题。该练习的挑战是将任意数量的单词读入向量,然后输出给定单词在该输入中出现的次数。我在下面包含了我的相关代码:
string currentWord = words[0];
words_sz currentWordCount = 1;
// invariant: we have counted i of the current words in the vector
for (words_sz i = 1; i < size; ++i) {
if (currentWord != words[i]) {
cout << currentWord << ": " << currentWordCount << endl;
currentWord = words[i];
currentWordCount = 0;
}
++currentWordCount;
}
cout << currentWord << ": " << currentWordCount << endl;
请注意,输出代码必须在循环外再次出现才能处理最后一个字。我意识到,如果我担心重复代码的复杂性,我可以将它移到一个函数中,只需调用函数两次。
问题1:这种变通方法常见吗?有没有一种典型的方法来重构循环以避免这种重复?
问题2:虽然我的解决方案很简单,但我习惯于从零开始计数。有没有一种更可接受的方式来编写关于这一点的循环?还是这是最佳实施?
为什么不能使用地图http://www.cplusplus.com/reference/stl/map/单词作为关键字,值作为计数?
相关文章:
- 以下示例中如何避免代码复制?C++/库达
- 如何使用从C++代码写入时复制 BTRFS?
- 如果 iostream 对象不可复制,为什么以下代码是合法的?
- 为什么我的代码在尝试复制字符数组时引发 C6386 错误?
- 是否可以避免在以下代码中复制/移动构造函数的需要?
- 为什么在我的代码中调用复制构造函数而不是移动构造函数?
- 为什么在使用转换构造函数编译代码时需要 const 复制构造函数?
- C++具有移动和复制构造函数的类中的代码重复
- 如何在不复制此代码的情况下将多个函数放入多个命名空间?
- 表示行为与复制代码块的函数参数?
- 避免使用 auto 关键字从字面上复制 const 和非 const 的代码?
- 为什么在下面的代码中调用复制构造函数两次
- 从教科书中一对一复制的代码绝对没有任何作用
- 复制赋值和复制构造函数(代码C++的差异)
- 是否可以动态翻译QT应用程序而无需复制代码
- 我无法使用 c++(代码块)中的 fstream 将文件内容复制到另一个。如何运行该文件?
- 循环设计:计数和后续代码复制
- C++将格式化的代码复制到单词(如视觉助手)
- 将代码复制到RAM-如何一次复制多个功能
- 是否有任何方法可以避免跨类的不同构造函数进行代码复制