आपके पास दो विकल्प (सी ++ 11 में तीन) है const_iterator
रों और अनुक्रमित
void func(const std::vector<type>& vec) {
std::vector<type>::const_iterator iter;
for (iter = vec.begin(); iter != vec.end(); ++iter)
// do something with *iter
/* or
for (size_t index = 0; index != vec.size(); ++index)
// do something with vec[index]
// as of C++11
for (const auto& item: vec)
// do something with item
*/
}
आप को प्राथमिकता देनी चाहिए (+ C++ 11 "सीमा-के लिए") !=
बजाय का उपयोग कर <
iterators के साथ - उत्तरार्द्ध सभी iterators, पूर्व इच्छा के साथ काम नहीं करता है। पूर्व के साथ आप भी कोड अधिक सामान्य बना सकते हैं
template<typename Container>
void func(const Container& container) {
typename Container::const_iterator iter;
for (iter = container.begin(); iter != container.end(); ++iter)
// work with *iter
}
स्रोत
2011-02-03 19:13:03
कृपया बनाम उपसर्ग के बारे में पढ़ा पोस्टफिक्स वृद्धि ऑपरेटर। 'यह ++ 'होना चाहिए' ++ ', और दुर्लभ मामलों में' ++ 'की आवश्यकता होती है (यानी जब पुनरावृत्ति करते समय मिटाना)। –
यह स्पष्ट रूप से स्पष्ट है कि इस मामले में समस्या क्या है। हालांकि, भविष्य में आपको अपने प्रश्न में कंपाइलर आपको सही त्रुटि संदेश शामिल करना चाहिए। –