2012-01-19 3 views
5

Trong mã ở trên phần khác-nếu có lỗi cho tôi hay không. Ý nghĩa của khác-nếu là: khác nếu giá trị của x không có trong deque sau đó ...Cách kiểm tra/tìm xem một mặt hàng có nằm trong số DE2

#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); 
    } 

LỖI: "" không điều hành khớp với các toán hạng này

+2

Lỗi nào cung cấp cho bạn? find() trả về visited.end() nếu không tìm thấy, không phải NULL btw. –

Trả lời

16

Nếu std::find không thể tìm thấy giá trị cụ thể, nó sẽ trả về "kết thúc" của cặp lặp.

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

Edit: Nếu bạn muốn biết nếu x trong deque, chỉ cần đảo ngược tình trạng này.

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

Edit: Nếu bạn không quen với khái niệm lặp trong C++, vui lòng đọc Understanding Iterators in the STL.

+0

Điều gì xảy ra nếu x có cùng giá trị như visited.end() ??? –

+0

@georgemano: Chỉ cần sử dụng '! =' Nếu bạn muốn biết nếu * x * ** là ** trong deque ... – kennytm

+6

@georgemano: Không thể. '.end()' trỏ đến vị trí sau mặt sau của deque. – kennytm