c++ - उपच - मेटास्टेटिक ग्रंथिकर्कटता चरण 4




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

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

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

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