我正試圖解決這個問題:我如何擺脫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