c++ चरण क्यों std कर सकते हैं: सेट(एक एकल बृहदान्त्र के साथ) संकलन?




मेटास्टेटिक ग्रंथिकर्कटता चरण 4 (2)

दूसरे मामले में, std एक लेबल है। यह एक केस स्टेटमेंट में गलत तरीके से वर्तनी की तरह ही है।

https://code.i-harness.com

मैंने गलती से लिख दिया था

std::set<string> keys;

जैसा:

std:set<string> keys;

लेकिन अजीब तरह से पर्याप्त, विजुअल स्टूडियो 2013 अभी भी संकलित है।

क्यों होता है ऐसा?

वास्तव में keys न केवल परिभाषित की जाती हैं, बल्कि बाद में तार के एक सेट के रूप में उपयोग की जाती हैं, जैसे कि

if(keys.find(keystr)==keys.end()){
    keys.insert(keystr);
    toret.push_back(tempv);
}

ब्लॉक स्कोप में, एक पहचानकर्ता जिसके बाद एक कोलन होता है, एक लेबल का परिचय देता है। इस प्रकार, आपका कथन इसके बराबर है:

set<string> keys;

सिवाय इसके कि यह लेबल std सहन करता है और स्टेटमेंट goto std; से कूद सकता है goto std;

किसी कारण के लिए, नाम set कंपाइलर के लिए जाना जाता है --- शायद आपने using namespace std; किया था using namespace std; , या using std::set; , या ऐसा कुछ, या शायद आपने अपने set प्रकार को कहीं परिभाषित किया है।





visual-studio