2012-01-21 25 views
5

मैं सी ++ में बिट्ससेट का वेक्टर बनाने की कोशिश कर रहा हूं।क्या बिट्ससेट का वेक्टर बनाना संभव है?

vector<bitset<8>> bvc; 
    while (true) { 
     bitset<8> bstemp((long) xtemp); 
     if (bstemp.count == y1) { 
      bvc.push_back(bstemp); 
     } 
     if (xtemp == 0) { 
      break; 
     } 
     xtemp = (xtemp-1) & ntemp; 
    } 

जब मैं कार्यक्रम को संकलित करने का प्रयास करें, मैं त्रुटि पढ़ता है कि कि bvc दायरे में घोषित नहीं किया गया था मिलती है: इस के लिए, मैं कोशिश के रूप में नीचे दिए कोड स्निपेट में दिखाया गया है की कोशिश की है। यह आगे बताता है कि टेम्पलेट तर्क 1 और 2 अमान्य हैं। (पहली पंक्ति)। इसके अलावा, bvc.push_back(bstemp) युक्त लाइन में, मुझे एक त्रुटि मिल रही है जो सदस्य फ़ंक्शन के अमान्य उपयोग को पढ़ती है।

+0

यदि यह मदद करता है, तो मैं पूरा कोड पोस्ट करने के लिए तैयार हूं। हालांकि, कोड के अपरिवर्तनीय हिस्से को पोस्ट करने के लिए मैंने पिछले प्रश्न में मतदान किया था। इसलिए मैंने यहां केवल छोटा संस्करण रखा है। – uyetch

+1

वैसे, यदि आप उन्हें समझते हैं कि आप उन्हें समझने के बजाय संकलक से प्राप्त वास्तविक त्रुटियों को पोस्ट करते हैं, तो इससे बहुत मदद मिलेगी। – littleadv

+0

यहाँ त्रुटि मैं मिलता है के बाद मैं वेक्टर बदलने> सदिश करने के लिए> (उत्तर में सुझाव के रूप में ' 'int मुख्य (int, चार **)' समारोह में:। त्रुटि: सदस्य के अवैध उपयोग (तुमने किया था '&' भूल जाओ?) ' – uyetch

उत्तर

13

मुझे एहसास है कि आप प्री सी ++ 11 का उपयोग कर रहे हैं।

बदलें इस:

vector<bitset<8>> bvc; 
इस के लिए

:

vector<bitset<8> > bvc; 

अन्यथा, >> सही-शिफ्ट ऑपरेटर के रूप में पार्स किया गया है। यह सी ++ 11 में "निश्चित" था।

+1

शब्द को ** अधिकतम मर्च ** कहा जाता है यदि कोई और आगे पढ़ने के इच्छुक है। – Barracuda

4

vector<bitset<8>> bvc से vector<bitset<8> > bvc बदलें। अंतरिक्ष नोट करें। >> एक ऑपरेटर है।

हां, बहुत बुरा वाक्यविन्यास मुद्दा।

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