मुझे एक डेक तत्व की अनुक्रमणिका को cout और वापस करने की आवश्यकता है जो एक इटेटरेटर इंगित कर रहा है। मैं एक इटेटरेटर से बाहर कैसे निकल सकता हूं?सी ++ में, मैं एक पुनरावर्तक की एक int अनुक्रमणिका कैसे प्राप्त करूं?
उत्तर
std::ptrdiff_t index = std::distance(myDeque.begin(), curIterator);
आप उपयोग कर सकते हैं:
std::ptrdiff_t index(std::distance(my_container.begin(), my_iterator));
इस तरह के एक दिनचर्या के क्रम लागत से सावधान रहें, however- यह आप का उपयोग डेटा संरचना पर निर्भर करता है।
या इसके बजाय यह इटरेटर (यादृच्छिक, आगे, इत्यादि) पर निर्भर करता है –
मैं नंबर खोजने के लिए कंटेनर के प्रत्येक तत्व के माध्यम से दूरी कदम मान रहा हूं, इसलिए रनकटाइम लागत एक बड़ी डेक बड़ी होगी। हालांकि, मेरे डेक 10 तत्वों से बड़ा नहीं होना चाहिए। और दूरी एक int वापस करता है? इंडेक्स() कॉल क्या करता है? – user83
यदि आपके डेक में 10 से अधिक तत्व नहीं होने चाहिए तो मैं प्रस्तुत करता हूं कि आपको इसके बजाय 'वेक्टर' का उपयोग करना चाहिए, या कम से कम डेक के साथ चिपकने के लिए एक अच्छा तर्क होना चाहिए। इंडेक्स() "कॉल" केवल 'वैरिएबल' नामक रिटर्न वैल्यू के साथ निर्मित 'इंडेक्स' नामक एक चर है। – fbrereto
यादृच्छिक अभिगम iterators के लिए आप सिर्फ घटाव का उपयोग कर सकते हैं:
size_t index = some_iterator - some_deque.begin()
जाहिर है इस (। std::list
या जो कुछ भी के लिए उदाहरण के लिए) सभी iterators के लिए काम नहीं करता है, लेकिन मैं प्रस्तुत करता हूँ वहाँ में एक निश्चित लालित्य है कि कि आप केवल इस तकनीक का उपयोग कर सकते हैं जब इसमें निरंतर समय लगेगा। यदि आपके कंटेनर में यादृच्छिक अभिगम इटरेटर्स नहीं हैं तो शायद उन्हें इंडेक्स को खोजने की कोशिश करने के लिए समझदारी नहीं है।
मुझे लगता है कि मैं इसे अपनी सादगी और लालित्य के लिए सबसे अच्छा जवाब देने जा रहा हूं। क्या मैं परिणाम को एक इंट को सौंप सकता हूं ताकि इसे एक int में डाला जा सके? – user83
आप इसे एक int में असाइन कर सकते हैं, लेकिन आपको शायद उच्च चेतावनी स्तर (या तो हस्ताक्षरित-> हस्ताक्षरित रूपांतरण या प्रकार की वास्तविक शॉर्टिंग, कंपाइलर आदि के आधार पर एक कंपाइलर चेतावनी मिल जाएगी)।यह स्पष्ट रूप से int को डालने के लिए थोड़ा परेशान है, लेकिन यह तब तक एक समस्या को छिपाने वाला नहीं है जब तक कि आपके डेक में 2 अरब से अधिक तत्व नहीं होंगे - जो मुझे लगता है कि आप निश्चित रूप से सुनिश्चित होंगे कि आप नहीं करेंगे :) – Peter
:
std::ptrdiff_t index(std::distance(my_container.begin(), my_iterator));
और
std::ptrdiff_t index = some_iterator - some_deque.begin()
... उत्तरार्द्ध केवल रैंडम एक्सेस iterators के लिए लागू किया जा रहा है की श्रेष्ठता है - जब एक और कंटेनर के लिए प्रतिस्थापन इसलिए , आप आकस्मिक रूप से उदाहरण के लिए सूचियों के लिए एक महंगा ऑपरेशन (ओ (एन) प्राप्त नहीं करेंगे)।
- 1. मैं एक पुनरावर्तक
- 2. मैं एक पुनरावर्तक
- 3. मैं अपने अंकों में एक int कैसे विभाजित करूं?
- 4. सी में, मैं एक निर्दिष्ट निर्देशिका कैसे प्राप्त करूं?
- 5. एनएलटीके में, मैं एक पाठ की समरूपता कैसे प्राप्त करूं?
- 6. मैं पर्ल में एक स्ट्रिंग की लंबाई कैसे प्राप्त करूं?
- 7. रूबी में एक स्ट्रिंग में किसी चरित्र की अनुक्रमणिका कैसे प्राप्त करूं?
- 8. मैं एक और गतिविधि में एक चर कैसे प्राप्त करूं?
- 9. मैं ExpandableListView में पहले/अंतिम दृश्य समूह की अनुक्रमणिका कैसे प्राप्त करूं?
- 10. मैं int कैसे परिवर्तित करूं? int
- 11. मोंगो में, मैं संग्रह की अनुक्रमणिका कैसे प्रदर्शित करूं?
- 12. एक पुनरावर्तक
- 13. सूची की अंतिम अनुक्रमणिका कैसे प्राप्त करें?
- 14. एक क्वेरीसेट में किसी तत्व की अनुक्रमणिका प्राप्त करें
- 15. मैं सी में "char *" सरणी की लंबाई कैसे प्राप्त करूं?
- 16. मैं सी # में निकटतम int तक फ़्लोट कैसे करूं?
- 17. सी में स्ट्रिंग के भीतर किसी वर्ण की अनुक्रमणिका कैसे प्राप्त करूं?
- 18. मैं सी # में% LocalAppData% कैसे प्राप्त करूं?
- 19. एक स्ट्रिंग की nth घटना की अनुक्रमणिका प्राप्त करें?
- 20. कोको में एक चरित्र के int ASCII मूल्य को मैं कैसे प्राप्त करूं?
- 21. मैं दशमलव को सी # में एक int में कैसे परिवर्तित करूं?
- 22. एक पुनरावर्तक का उपयोग कैसे करें?
- 23. एक पुनरावर्तक कैसे क्लोन करें?
- 24. मैं सी # में एक combobox में मूल्य द्वारा एक आइटम कैसे प्राप्त करूं?
- 25. मैं किसी आइटम की अनुक्रमणिका को सरणी में कैसे प्राप्त करूं?
- 26. मैं एक साल पहले सी # में आज की तारीख कैसे प्राप्त करूं?
- 27. मैं एक पीएनजी छवि से एक आइकन कैसे प्राप्त करूं?
- 28. उद्देश्य-सी, मैं एक डबल से int में कैसे परिवर्तित करूं?
- 29. मैं सी # में एक int से दो बाइट्स कैसे परिवर्तित करूं?
- 30. पायथन - एक पुनरावर्तक वर्ग
आपको इंडेक्स की आवश्यकता क्यों है? क्या आप ऑब्जेक्ट को केवल अपमानित नहीं कर सकते हैं और उस पर इटेटरेटर अंकगणित कर सकते हैं? –
कैसा है? इटेटरेटर को डिफ्रेंस करने की तरह ही एक पॉइंटर को डिफ्रेंस करने की तरह नहीं होगा और मुझे मेमोरी पता दे, डेक में स्थान नहीं? – user83