टाइप टी आमतौर पर तब तक कोई फर्क नहीं पड़ता जब तक यह वेक्टर आकार जितना बड़ा न हो।
प्रदर्शन के संदर्भ में, कोई अंतर नहीं होना चाहिए।
त्रुटि उन्मुखता/पोर्टेबिलिटी के संदर्भ में, मैं सुझाव पर हस्ताक्षर किए पूर्णांक का उपयोग कर, क्योंकि यदि आप किसी भी तरह i
से घटाना मूल्यों, आप एक बड़े धनात्मक संख्या है, जो एक नकारात्मक संख्या से जाँच करने के लिए कठिन है मिल जाएगा। लेकिन क्योंकि v.size()
एक size_t
है, यदि आप टी के लिए एक हस्ताक्षरित पूर्णांक का उपयोग करें, और v
≥ 2 (या 2) आइटम नहीं है, i
समाप्त होने से पहले अमान्य हो करना होगा। लेकिन मुझे लगता है कि अगर वेक्टर को हास्यास्पद रूप से बड़ा होना चाहिए (64-बिट प्लेटफ़ॉर्म पर esp।), तो टाइप करने के लिए किस प्रकार की टी से बड़ी समस्या है।
काउंटर के लिए कभी भी int32_t
का उपयोग न करें।
(ये पहले ओपी के संपादित :)
लेकिन आपके मामले में आप एक इटरेटर दोहराएं बजाय चाहते हो सकता है कर रहे हैं।
for (std::vector<K>::const_iterator cit = v.begin(); cit != v.end(); ++ cit) {
const K& t = *cit;
// ...
}
Boost.Foreach के साथ आप
BOOST_FOREACH(const K& t, v) {
// ...
}
में इस गंदगी बदल सकती है C++ 0x में यह हो जाता है एक built-in feature (§ [stmt.ranged]), लेकिन AFAIK कोई compilers अभी तक इसका समर्थन किया:
for (const K& t : v) {
// ...
}
लेकिन सी ++ 0x का समर्थन करने का दावा करने वाले अधिकांश कंपाइलर्स को auto
:
की अनुमति देनी चाहिए
for (auto cit = v.cbegin(); cit != v.cend(); ++ cit) {
const K& t = *cit;
// ...
}
या लैम्ब्डा अभिव्यक्ति:
std::for_each(v.cbegin(), v.cend(), [](const K& t) {
...
});
या, C++ 0x: '(ऑटो- मैं: v) {} ..' (N2930) :-) –
अब मेरे सवाल का हो सकता है, तेज़/स्पष्ट/पोर्टेबल क्या है: इसे फिर से करने के लिए एक पूर्णांक का उपयोग करना (और इसे सीधे इंडेक्स के रूप में रखना) या इंडेक्स की गणना करने के लिए एक इटरेटर और दूरी फ़ंक्शन का उपयोग करना? – Danvil
@ डेनविल: सबसे अधिक संभावना है, इससे कोई फर्क नहीं पड़ता। दोनों में एक साधारण वृद्धि और या तो एक जोड़ या घटाव शामिल है। और दोनों मामलों में, उन दो बयानों को लंबित नहीं किया जा सकता है। मैं उम्मीद करता हूं कि मैं और इटरेटर दोनों को अलग करने का समाधान थोड़ा तेज़ हो जाएगा क्योंकि इसे लंबित किया जा सकता है। हालांकि, मुझे संदेह है कि अंतर अभ्यास में मापनीय है। – Sjoerd