2012-01-19 22 views
5

içinde olup olmadığını nasıl kontrol edersiniz/bulursanız yukarıdaki kodda, eğer varsa hata verir. anlamı else-if geçerli: x'in değeri daha sonra deque değilse başka ...Bir öğenin 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); 
    } 

HATA: "" hayır operatör bu işlemsellere

+2

Size ne gibi bir hata veriyor? find(), visit.end() bulunmazsa, NULL btw değerini döndürür. –

cevap

16

std::find belirli bir değer bulamazsa, bu yineleyici çiftinin "sonu" döndürecektir eşleşir.

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() 

Düzenleme: Eğer xdeque içinde ise sadece durumun tersine, bilmek istiyorum.

else if (std::find(visited.begin(), visited.end(), x) != visited.end()) 
{ 
    // process the case where 'x' _is_ found between 
    // visited.begin() and visited.end() 

Düzenleme: C++ yineleyici kavramı ile yabancı iseniz, Understanding Iterators in the STL okuyunuz.

+0

x, visit.end() ?? ile aynı değere sahipse ne olur? –

+0

@georgemano: Sadece 'kullanmak =' sen deque içinde ** * x * ** olup olmadığını bilmek istiyorum ... – kennytm

+6

@georgemano: Olmaz. .end() 'deque arkasındaki yeri işaret eder. – kennytm

İlgili konular