如何检查/查找项目是否在DEQUE中
How to check/find if an item is in a DEQUE
在上面的代码中,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.
}
希望这能帮助到别人
相关文章:
- 您是否必须随项目一起交付原型文件?
- 是否可以在 Xcode C++项目中包含框架?
- 检查特定txt文件中的项目是否符合"名称编号USACO"中的约束
- 检测 Visual Studio 项目的属性中是否启用了英特尔 MKL
- 是否可以将 EXE 文件作为 lib 文件链接到另一个项目?
- 在Visual Studio本机单元测试中,是否可以将单元测试耦合到项目?
- 是否可以在相同的命名空间中,但在不同的嵌套项目中定义具有相同名称的类
- 是否可以在QT项目中使用Tensorflow C++ API?
- 是否可以简化此方法以安装和导出基于 CMake 的项目?
- 在一个VS项目中使用多个工具集 - 是否存在风险
- 是否有任何 MSBuild 命令行选项可以动态禁用 c++ 项目的代码分析?
- 在拥有C /CX项目时,是否可以设置calendardatePicker的默认日期
- 试图使循环仅检查字符串是否仅数字,而在编程中允许的C IM中允许的负数是一个类项目
- 是否有其他方法将.dll文件从一个项目复制到我的启动项目中的可执行文件旁边
- 每个项目的地图是否可以具有不同的尺寸
- 如果我尝试将对话框从一个项目移动到另一个项目,我是否需要从 rc 文件中复制 DESIGNINFO、对话框信息和AFX_
- 什么 STL 算法可以确定容器中的一个项目是否满足谓词?
- Android Studio 项目中的 c++ 代码是否最终出现在 apk 文件中(除了 .so 文件)
- 我们是否应该在项目中包含的所有文件中声明外部变量
- 现代C++的实验特征对于长期项目是否可靠?