2010-04-09 6 views
10

मेरे पास एक std :: डेक है, और मैं एक निर्दिष्ट इंडेक्स पर एक तत्व डालना चाहता हूं (मुझे पता है कि std :: सूची इस पर बेहतर होगी)। डेक :: डालने() फ़ंक्शन सम्मिलित करने के लिए स्थान निर्दिष्ट करने के लिए एक इटरेटर लेता है। एक इंडेक्स को देखते हुए, मैं उस स्थान पर इशारा करने वाला एक इटेटरेटर कैसे प्राप्त कर सकता हूं, ताकि मैं उस इटरेटर को सम्मिलित करने के लिए पास कर सकूं()?std :: डेक: मैं एक निर्दिष्ट सूचकांक पर तत्व को इंगित करने वाला एक इटरेटर कैसे प्राप्त करूं?

उदाहरण के लिए:

void insertThing (deque<Thing> & things, Thing thing, size_t index) 
{ 
    deque<Thing>::iterator it = /* what do I do here? */ 
    things.insert (it, thing); 
} 

मुझे यकीन है कि यह एक बहुत ही बुनियादी सवाल यह है हूँ, और मैं इसके लिए माफी माँगता हूँ। यह लंबे समय से रहा है क्योंकि मैंने एसटीएल का उपयोग किया है, और मुझे std :: डेक की सदस्य सूची में कुछ भी दिखाई नहीं देता है जो स्पष्ट रूप से मैं चाहता हूं। धन्यवाद।

+1

वास्तव में, Deque इस पर सूची की तुलना में बेहतर है सक्षम होना चाहिए। –

+0

नील, क्या आप निश्चित हैं? http://www.sgi.com/tech/stl/Deque.html कहता है कि यह "रैखिक समय सम्मिलन [...] मध्य में" का समर्थन करता है, जबकि http://www.sgi.com/tech/stl/List .html में "मध्य में निरंतर समय सम्मिलन [...] है।" –

+0

@ मैथ्यू लेकिन आपको पहले सम्मिलन बिंदु ढूंढना होगा। –

उत्तर

22
void insertThing (deque<Thing> & things, Thing thing, size_t index) 
{ 
    deque<Thing>::iterator it = things.begin() + index; 
    things.insert (it, thing); 
} 
+0

बहुत बहुत धन्यवाद! –

10

एक Deque रैंडम एक्सेस का समर्थन करता है, तो आप कहने के लिए

things.insert(my_deque.begin() + index, thing); 
संबंधित मुद्दे