这在Visual C++ 2010 Express上编译并运行正常,但它只检查[2]元素:"Fish".
int main()
{
vector<string> words;
string temp;
vector<string> disliked(3);
disliked[0] = "Broccoli";
disliked[1] = "Mushrooms";
disliked[2] = "Fish";
while (cin >> temp)
words.push_back(temp);
cout << "Number of words: " << words.size() << endl;
for (int i=0; i<words.size(); ++i) {
if (words[i]!=disliked[2])
cout << words[i] << " ";
else cout << "BLEEP" << " ";
}
cout << endl;
keep_window_open();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如何在不键入的情况下检查所有向量元素:
if (words[i]!=disliked[0] && words[i]!=disliked[1] && words[i]!=disliked[2])
Run Code Online (Sandbox Code Playgroud)
?有关如何使其更好或更优雅的任何其他建议?
if (std::find(disliked.begin(), disliked.end(), words[i]) == disliked.end()) {
cout << words[i] << " ";
} else {
cout << "BLEEP" << " ";
}
Run Code Online (Sandbox Code Playgroud)
如果std::vector<string> disliked(3);用std::set<string> disliked;它替换它会更快.
std::set<string> disliked;
disliked.insert("Broccoli");
disliked.insert("Mushrooms");
disliked.insert("Fish");
//....
if (disliked.find(words[i]) == disliked.end()) {
cout << words[i] << " ";
} else {
cout << "BLEEP" << " ";
}
Run Code Online (Sandbox Code Playgroud)