अगर मैं एक vector<bool> vec_bool
तो मैं |=
असाइनमेंट ऑपरेटर का उपयोग कर वेक्टर की सामग्री को संशोधित नहीं कर सकते हैं। यही कारण है, लाइनोंसंयोजन असाइनमेंट ऑपरेटर क्यों करता है = = बूल के वैक्टरों के साथ काम नहीं करता है?
vec_bool[0] |= true;
vec_bool[0] |= vec_bool[1];
दे संकलक त्रुटियों है, जबकि लाइनों
bool a = false;
a |= true;
a |= vec_bool[0];
vec_bool[0] = vec_bool[0] | vec_bool[1];
vec_bool[0] = vec_bool[0] || vec_bool[1];
vector<int> vec_int(3);
vec_int[0] |= vec_int[1];
नहीं है। इसका कारण क्या है? bool&
के लिए उपनाम
test.cpp:21:17: error: no match for ‘operator|=’ (operand types are ‘std::vector::reference {aka std::_Bit_reference}’ and ‘bool’)
आपको याद रखना होगा कि ['std :: vector'] (http://en.cppreference.com/w/cpp/container/vector_bool) एक * साधारण * वेक्टर नहीं है। यह 'बूल' का वास्तविक वेक्टर नहीं है, लेकिन बिट्स के वेक्टर की तरह, जिसका कार्यान्वयन सी ++ विनिर्देशन द्वारा निर्दिष्ट नहीं है। –
संभावित डुप्लिकेट [std :: vector में कोई .data() क्यों नहीं है?] (Https://stackoverflow.com/questions/46115669/why-does-stdvectorbool-has-no-data) –
आप एक ले सकते हैं अधिक जानकारी के बारे में यह – cbuchart