我是編程中的新手,我寫了一段可以工作的代碼,但我有興趣使其具有可伸縮性。如何通過C++中的多條件IF語句循環
以下代碼檢查矢量列表中的單個單詞是否與另一個矢量列表中的任何單詞匹配。
if (words[i] != dislike[0] && words[i] != dislike[1] && words[i] != dislike[2] && words[i] != dislike[3]) //check for disliked words
cout << words[i] << '\n';
由於都看得到,代碼的功能由字迭代字的工作,所以如果我要改變文字的2-14在我的第二個向量列表,我需要將其添加到IF語句。
是否有更優化的解決方案?我一直試圖弄清楚這幾個小時,但我沒有運氣。 謝謝。
P.S.以下是我的完整代碼。
int main()
{
// words we dislike
vector<string>dislike = { "broccoli", "coke", "potatoes", "water" };
//take input from user
vector<string> words;
for (string temp; cin >> temp;) // read whitespace-separated words
words.push_back(temp); // put into vector
//give output
cout << "Number of words: " << words.size() << '\n';
//sort(words); // DONT sort the words
for (int i = 0; i<words.size(); ++i) //go through your words vector
{
if (i == 0 || words[i - 1] != words[i])//remove repeating words
{
if (words[i] != dislike[0] && words[i] != dislike[1] && words[i] != dislike[2] && words[i] != dislike[3]) //check for dislike
cout << words[i] << '\n';
else
cout << "BlEEP!\n"; //print if word is disliked*/
}
}
return 0;
}
而不是假設'不喜歡'一定大小,也循環它。完成後,只需使用'std :: find'即可。 – StoryTeller
謝謝。 'std :: find'對我來說是新的,所以我會研究並再試一次。 – Newskooler
爲什麼不使用std :: unique? – Dmitriy