आपको std::vector<T>::size_type
का उपयोग करना चाहिए। इसका हस्ताक्षर अभिन्न प्रकार। इसका आमतौर परsize_t
जैसा ही है।
size_type
और size_t
के बीच अंतर जानने के लिए, इस विषय देखें:
1. इसी तरह, आप std::string::size_type
, std::list<T>::size_type
, std::deque<T>::size_type
, std::set<T>::size_type
, और इतने पर उपयोग कर सकते हैं। लगभग सभी मानक कंटेनर size_type
नामक एक नेस्टेड प्रकार को परिभाषित करते हैं।
यह तर्क कर सकते हैं कि आप इटरेटर बजाय सूचकांक उपयोग करना चाहिए। लेकिन मैं यह भी देख सकते हैं कि कुछ समय इटरेटर बनाता है के लिए लूप बहुत व्यापक क्षैतिज, इस देखें:
for(std::vector<std::vector<std::string> >::iterator it = v.begin(); it != v.end(); ++it)
{
}
यह नहीं लगती है। यह वास्तव में कभी-कभी परेशान होता है। ऐसी परिस्थितियों में, कुछ प्रोग्रामर इंडेक्सइटरेटर से अधिक पसंद करते हैं।
सी ++ 0x, इटरेटर को अधिक मूर्खतापूर्ण बना दिया गया है। अब आप वाक्य रचना बोझिल बनाने के बिना इटरेटर उपयोग कर सकते हैं:,
for(auto it = v.begin(); it != v.end(); ++it)
{
}
या और भी बेहतर उपयोग करते हुए रेंज आधारित पाश के लिए:
for(auto & item : v)
{
}
इंडेक्स का उपयोग करने के बजाय, इटरेटर्स का उपयोग करने पर विचार करें। –