在上面的代码中,else-if部分给我错误。 else-if的含义是: else如果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())
{
   // process the case where 'x' _is_not_ found between
   // visited.begin() and visited.end()

编辑:如果您想知道双引号中的x 是否为,只需逆转该条件即可。
else if (std::find(visited.begin(), visited.end(), x) != visited.end())
{
   // process the case where 'x' _is_ found between
   // visited.begin() and visited.end()

编辑:如果您不熟悉C++中的迭代器概念,请阅读Understanding Iterators in the STL

关于c++ - 如何检查/查找项目是否在DEQUE中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8930417/

10-13 08:17