2012-01-19 19 views
5

में से ऊपर के कोड में चेक-इन करें या नहीं, अगर भाग मुझे त्रुटि देता है। का अर्थ कुछ और-यदि है: और अगर एक्स का मान Deque तो में नहीं है ...किसी आइटम को 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

यह आपको क्या त्रुटि देता है? ढूंढें() रिटर्न का दौरा किया .end() अगर नहीं मिला, न कि पूर्ण बीटीडब्ल्यू। –

उत्तर

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

संपादित करें: आप अगर एक्स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() 

संपादित करें: आप सी ++ में इटरेटर अवधारणा से परिचित नहीं हैं, तो कृपया Understanding Iterators in the STL पढ़ें।

+0

क्या होता है यदि एक्स के पास समान मूल्य है .end() ??? –

+0

@georgemano: अगर आप जानना चाहते हैं कि * x * ** ** ** डेक में है ... – kennytm

+6

@georgemano: यह नहीं कर सकता। '.end()' डेक के पीछे स्थान के लिए बिंदु। – kennytm

संबंधित मुद्दे