我正试图解决这个问题:我如何摆脱C++循环?
编写一个程序来计算每个不同的单词出现在其输入中的次数。
这是迄今为止代码:
#include <algorithm>
#include <iomanip>
#include <ios>
#include <iostream>
#include <string>
#include <vector>
#include <iterator>
using std::cin;
using std::sort;
using std::cout;
using std::streamsize;
using std::endl;
using std::string;
using std::setprecision;
using std::vector;
int main()
{
cout << "Enter words: ";
vector<string> lista;
vector<string> listaCitita;
string x;
while(cin >> x)
{
lista.push_back(x);
}
int listaSize = lista.size();
for(int i = 0; i <= listaSize -1; i++)
{
int x = 0;
int counter = 0;
vector<string>::iterator it = find(listaCitita.begin(), listaCitita.end(), lista[i]);
vector<string>::iterator itu = find(lista.begin(), lista.end(), lista[i]);
if(it != listaCitita.end())
{
break;
}
while(x <= listaSize -1)
{
if(lista[i] == lista[x])
{
counter++;
x++;
if(itu != lista.end())
{
}
else
{
listaCitita.push_back(lista[i]);
}
}
else
{
x++;
}
}
cout << "The string: '" << lista[i] << "' appeared " << counter << " times" << endl;
}
return 0;
}
我想要做的是,如果它已经被打印了多少次这个词表明,它不会是印刷再次多少次显示。 这就是为什么我做了第二个向量(listaCitita),我添加了已经迭代过的元素。问题是当我这样做时,它不会突破for循环。
if(it != listaCitita.end())
{
break;
}
对不起我的英语不好。谢谢。
是什么让你觉得它不会打破循环?在if(it!= listaCitita.end())之前添加调试打印'cout <<(listaCitita.end()== it?“it = end”:“it!= end”)<< endl; '。添加'cout <<“它打破了!”在'break'之前,'endl';添加'cout <<“没有打破!”在'}之后的<< endl'。走着瞧吧。 – user31264
做到了。它没有中断。 – furthergarden
请发送输出摘录。 – user31264