मैं थोड़ा सा दूर होने के बाद सी ++ पर लौट रहा हूं और पुराने तरबूज को धूलने की कोशिश कर रहा हूं।सी ++ (एसटीएल) बनाम जावा में इटरेटर, क्या एक वैचारिक अंतर है?
जावा में इटरेटर एक कंटेनर के लिए एक इंटरफ़ेस है जिसमें विधियां हैं: hasNext(), अगला() और निकालें()। हैक्स्ट() का अर्थ है कि में कंटेनर को घुमाने के लिए की सीमा की अवधारणा है।
//with an Iterator
Iterator<String> iter = trees.iterator();
while (iter.hasNext())
{
System.out.println(iter.next());
}
सी ++ मानक टेम्पलेट लायब्रेरी में, iterators एक डेटाप्रकार या वर्ग का समर्थन करता है ऑपरेटर ++ और ऑपरेटर का प्रतिनिधित्व करने लगते हैं == लेकिन है एक सीमा तो तुलना की आवश्यकता है में बनाया की कोई अवधारणा अगले करने के लिए आगे बढ़ने से पहले आइटम। सामान्य उपयोगकर्ता में दो इटरेटर की तुलना में उपयोगकर्ता द्वारा सीमा को जांचना होता है, दूसरा इटरेटर कंटेनर अंत होता है।
vector<int> vec;
vector<int>::iterator iter;
// Add some elements to vector
v.push_back(1);
v.push_back(4);
v.push_back(8);
for(iter= v.begin(); iter != v.end(); iter++)
{
cout << *i << " "; //Should output 1 4 8
}
यहां दिलचस्प दिलचस्प बात यह है कि सी ++ में एक सूचक एक सरणी के लिए एक पुनरावर्तक है। एसटीएल ने जो भी अस्तित्व में था और इसके आसपास सम्मेलन का निर्माण किया।
क्या इसमें कोई और कमी है जो मुझे याद आ रही है?
आपने इसे बहुत ज्यादा कहा था। जावा में, रेंज और इटरेटर की अवधारणाएं काफी विलय कर दी गई हैं। सी ++ में, एक इटरेटर के पास कोई तत्व नहीं है कि यह किस तत्व का हिस्सा है, और वास्तव में, कई श्रेणियों का हिस्सा हो सकता है (समाप्त होना शुरू होता है, अंत में शुरू होता है, शुरू होता है + 3 समाप्त होता है, शुरू होता है +6 और इतने पर।) – jalf
"... पुराने खरबूजे से धूलने की कोशिश कर रहा है" - शानदार वाक्यांश। – kevinarpe