2010-02-21 20 views
19

सी ++ में इटरेटर क्या हैं? आप एक सरणी में सब कुछ के माध्यम से जाने की सुविधा देता हैइटरेटर, सी ++ क्या हैं?

+0

http: // stackoverflow।कॉम/प्रश्न/1064 9 83/विभिन्न प्रकार के ऑफरेटर/1065528 # 1065528, http://www.sgi.com/tech/stl/Iterators.html –

+1

यह जानकारी का अच्छा स्रोत है: http: //www.cs .helsinki.fi/u/tpkarkka/alglib/k06/व्याख्यान/iterators.html – Manuel

+0

http://www.cplusplus.com/reference/iterator/ – 7bisso

उत्तर

15

इटरेटर्स ऑब्जेक्ट्स के संग्रह को पार करने का एक तरीका हैं। आम तौर पर, वे आपको एक एसईएल (मानक टेम्पलेट लाइब्रेरी) कंटेनर को अनुक्रमिक रूप से एक पॉइंटर के साथ शास्त्रीय सी सरणी तक पहुंचने के समान तरीके से एक्सेस करने की अनुमति देते हैं। एक ऑटरेटर के माध्यम से किसी ऑब्जेक्ट तक पहुंचने के लिए, आप इसे सी पॉइंटर की तरह मानते हैं। संग्रह में अगली ऑब्जेक्ट तक पहुंचने के लिए, आप increment (++) ऑपरेटर का उपयोग करते हैं। कुछ कंटेनरों में कई प्रकार के इटरेटर होते हैं जो आपको विभिन्न तरीकों से संग्रह को पार करने की अनुमति देते हैं।

2

http://en.wikipedia.org/wiki/Iterator

कुछ है, एक के बाद एक।

सी ++ में, मुझे लगता है कि आप "for_each" के बारे में बात कर रहे हैं ... जहां तक ​​मुझे पता है, सी ++ में वास्तव में सी # जैसी भाषाओं के विपरीत "foreach" नहीं है। हालांकि, मानक टेम्पलेट पुस्तकालय में यह है।

+1

यह निश्चित रूप से सरणी से अधिक है, वास्तव में iterators के बहुत लक्ष्य में सी ++ संग्रह को स्वयं और उसके गुणों को दूर करने के लिए है ताकि इटरेटर्स से निपटने वाले एल्गोरिदम किसी भी प्रकार के संग्रह पर उपयोग किए जा सकें :) –

1

वे एक अनुक्रम के भीतर एक स्थिति का प्रतिनिधित्व कर रहे हैं। अपने आप पर वे जिज्ञासा से थोड़ा अधिक हैं, लेकिन जब संदर्भित किया जाता है तो परिणामस्वरूप अनुक्रम के भीतर मौजूद मूल्य उस स्थिति में होता है जो यह दर्शाता है।

13

हालांकि शुरुआत में यह काफी स्पष्ट प्रतीत होता है, यह वास्तव में एक गहरा सवाल है जो आप महसूस कर सकते हैं। पॉल मैकजोन के साथ, अलेक्जेंडर स्टेपानोव (मूल के डिजाइनर, किसी के लिए जो इसके बारे में नहीं जानते) ने हाल ही में नामक एक पुस्तक जारी की है जिसका प्रोग्रामिंग (उर्फ ईओपी) है। उस पुस्तक में अध्याय छः की संपूर्णता विशेष रूप से इसे पुनरावर्तकों के लिए समर्पित है, और शेष पुस्तक का कुछ हिस्सा इटेटरेटरों के साथ निकटता से संबंधित है। कोई भी जो वास्तव में इसे पूरी तरह से जानना चाहता है, इस पुस्तक को पढ़ने पर विचार कर सकता है।

चेतावनी: ईओपी दिल की बेहोशी के लिए नहीं है। यह अपेक्षाकृत छोटा है (~ 260 पृष्ठ), लेकिन काफी घना। अनुभव से बात करते हुए, शुरुआती चलना थोड़ा विघटनकारी है। पहले अध्याय में मेरी प्रारंभिक प्रतिक्रिया कम या ज्यादा थी "ठीक है, यह इतना स्पष्ट है कि यह पढ़ने के लायक नहीं है। मैंने पिछले हफ्ते से पहले प्रोग्रामिंग शुरू की थी!"

सौभाग्य से, मैंने अभ्यास को देखा, और एक जोड़े करने की कोशिश की - और भले ही मैंने विषयों के बारे में स्पष्ट रूप से सोचा था, अभ्यास कठोर सबूत मांगते हैं। यह साबित करने के लिए कहा जा रहा है (गणितीय अर्थ में) कि पानी गीला है। आप अपने स्वयं के पूर्वकल्पित धारणा को दूर करने के लिए केवल दो बार अध्याय पढ़ने की आवश्यकता के बारे में बताते हैं कि आप पहले से ही जवाब जानते हैं, इसलिए आप असली सवाल देख सकते हैं - वास्तव में "गीला" क्या मतलब है; "गीलेपन" की मौलिक विशेषताओं क्या हैं?

+2

इस तरह के उत्तर खोजने के लिए SO पर आने का एक ऐसा अनुरोध है। +1 –

+0

एक पुस्तक के सूचक के लिए धन्यवाद, मुझे पहले (अगर पढ़ा नहीं गया) के बारे में पता होना चाहिए था। –

2

पी से। Accelerated C++ के 80:

एक इटरेटर एक मूल्य है कि

  • एक कंटेनर और कंटेनर में एक तत्व
  • हमें उस तत्व
  • बढ़ने के लिए आपरेशन प्रदान करता है में संग्रहीत मूल्य की जांच की सुविधा देता है की पहचान करता है कंटेनर
  • में उपलब्ध संचालन को उन तरीकों से प्रतिबंधित करता है जो कंटेनर कुशलता से संभाल सकता है
संबंधित मुद्दे