2012-01-19 44 views
5

在上面的代碼中,else-if部分給我錯誤。的含義否則,如果是:否則,如果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); 
    } 

錯誤:「」沒有運營商匹配這些操作數

+2

它給你什麼錯誤? find()返回visited.end()如果沒有找到,不是NULL btw。 –

回答

16

如果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

+0

如果x的值與visited.end()的值相同,會發生什麼? –

+0

@georgemano:只要使用'!=',如果你想知道* * * * **是否在**中... ** – kennytm

+6

@georgemano:它不能。 '.end()'指向deque後面的位置。 – kennytm

相關問題