का उपयोग करने के बजाय "टाइपपीफ वेक्टर
एक वेक्टर उदाहरण में, लेखक ने निम्नलिखित कोड का उपयोग किया;
typedef vector<double>::size_type vec_sz;
vec_sz size = homework.size;
मैं जानता हूँ कि typedef vector<double>::size_type vec_sz;
है इतना है कि वह vector<double>::size_type size = homework.size;
के रूप में अगले आदेश लिखने के लिए नहीं है, लेकिन मेरे सवाल क्यों वह सिर्फ size
बजाय एक पूर्णांक के रूप में घोषित नहीं किया है?
int size = homework.size;
क्या ऐसा इसलिए है क्योंकि हम एक वेक्टर का उपयोग कर रहे हैं?
यदि ऐसा है, तो इसका मतलब यह है कि वेक्टर इटरेटर्स द्वारा लौटाए गए मान नियमित चर में संग्रहीत नहीं किए जा सकते हैं?
यहां आपके लिए एक प्रश्न है: 'वेक्टर :: size_type' के पीछे क्या प्रकार है? –
संक्षिप्त उत्तर यह है कि लेखक शायद 'size_t' का उपयोग कर सकता था, लेकिन यह * 'int' जैसा नहीं है (यह * आमतौर पर * या तो 'हस्ताक्षरित int' या 'हस्ताक्षरित लंबा' जैसा ही होता है; इसके बारे में हस्ताक्षर एक बहुत बड़ा सौदा है और आकार अंतर भी आप जो कर रहे हैं उसके आधार पर भी मायने रख सकते हैं)। वास्तविक उत्तर बॉक्स के लिए भी लंबा जवाब बहुत लंबा है; एक _good_ सी ++ पुस्तक वास्तव में बताएगी कि 'int' बनाम' size_t' बनाम 'कंटेनर :: size_type' के साथ सौदा क्या है, लेकिन ऐसा लगता है जैसे आपका नहीं था। –
zwol
बिंदु यह है कि हम नहीं जानते कि 'std :: vector :: size_type' के पीछे वास्तव में किस प्रकार का है, लेकिन जो भी प्रकार है, हम इसे घोषित करने का एक छोटा सा तरीका चाहते हैं। यह 'int' बीटीडब्ल्यू होने की संभावना नहीं है। हम जानते हैं कि यह एक ऐसा प्रकार है जो * वेक्टर * में तत्वों की अधिकतम संख्या को संबोधित करने के लिए पर्याप्त संख्या में हो सकता है। –
Galik