geo*_*ano 9 c++ algorithm artificial-intelligence data-structures
在上面的代码中,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);
}
Run Code Online (Sandbox Code Playgroud)
错误:没有操作员"!" 匹配这些操作数
ken*_*ytm 20
如果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()
Run Code Online (Sandbox Code Playgroud)
编辑:如果您想知道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()
Run Code Online (Sandbox Code Playgroud)
编辑:如果您不熟悉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.
}
Run Code Online (Sandbox Code Playgroud)
希望这会帮助某人。:)