如何检查/查找项目是否在DEQUE中

How to check/find if an item is in a DEQUE

本文关键字:是否 项目 DEQUE 查找 何检查 检查      更新时间:2023-10-16

在上面的代码中,else-if部分给了我错误。else if的含义是:else如果x的值不在deque中,那么

#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找不到特定的值,它将返回迭代器对的"end"。

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是否在deque中,只需反转条件即可。

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++中的迭代器概念,请阅读STL中的理解迭代器。

对于那些访问过此页面的人来说,只需了解如何在出队列中检查/查找元素。快速解决方案如下:

使用std::find()方法:

numbers.push_back(10);
numbers.push_front(20);
numbers.push_back(30);
numbers.push_front(40);
deque<int>::iterator it = find(numbers.begin(), numbers.end(), 20);
if(it!=numbers.end())
{
    // Do your stuff. Here I am simply deleting the element
    it = numbers.erase(it); 
    // Note: Always save returned iterator from erase/insert method, otherwise
    // iterator will point to deleted resource, which leads to undefined behaviour.
}

希望这能帮助到别人

相关文章: