在上面的代码中,else-if部分出现了错误。else-if的含义是:如果x的值不在双端队列中,则…
#include <iostream>#include <ctime>#include <stack>#include <deque>#include <algorithm>deque<char> visited;char x; if (x==target[4][4]) { visited.push_back(x); return (visited); } else if (!(find(visited.begin(), visited.end(), x))) { visited.push_back(x); }
错误:没有与这些操作数匹配的“!”运算符
回答:
如果std::find
找不到特定值,它将返回迭代器对的“末尾”。
else if (std::find(visited.begin(), visited.end(), x) == visited.end()){ // 处理在visited.begin()和visited.end()之间未找到'x'的情况
编辑:如果你想知道x 是否 在双端队列中,只需反转条件即可。
else if (std::find(visited.begin(), visited.end(), x) != visited.end()){ // 处理在visited.begin()和visited.end()之间找到'x'的情况
编辑:如果你不熟悉C++中的迭代器概念,请阅读理解STL中的迭代器。