मैं एक ज्ञात स्थिति पर एक सी ++ वेक्टर में डालना चाहता हूं। मुझे पता है कि सी ++ लाइब्रेरी में एक डालने वाला() फ़ंक्शन है जो एक स्थिति और वस्तु को सम्मिलित करने के लिए लेता है लेकिन स्थिति प्रकार एक पुनरावर्तक है। मैं वेक्टर में डालना चाहता हूं जैसे कि मैं एक विशिष्ट इंडेक्स का उपयोग करके एक सरणी में डालना चाहता हूं।सी ++ ज्ञात स्थिति पर वेक्टर में डालें
उत्तर
उस डिबगिंग ट्रेस को देखें। निष्पादित की गई अंतिम चीज़ std :: copy (__ first = 0x90c6fa8, __last = 0x90c63bc, __result = 0x90c6878) है। इसके कारण क्या देख रहा था, आपने 0x90c63bc के रूप में डालने की स्थिति देने के लिए सम्मिलित कहा। std :: प्रतिलिपि [प्रथम, आखिरी) परिणाम के लिए प्रतिलिपि बनाता है, जिसमें अंतिम - पहले तत्वों के लिए कमरा होना चाहिए। इस कॉल में पहले < पहले है, जो अवैध (!) है, इसलिए मैं अनुमान लगा रहा हूं कि जिस स्थिति में आप डालने के लिए दे रहे हैं वह गलत है। क्या आप निश्चित रूप से लाइन के साथ कहीं भी नहीं फंस गए हैं? कि ट्रेस दिखा साथ GDB में, आप चलाना चाहिए
फ्रेम 10
प्रिंट vnum
जाँच करने के लिए। असल में, अगर आपने अपने प्रश्न में अभी संक्षेप में नहीं बताया है, तो मुझे अभी आपकी बग मिली है। दूसरी पंक्ति है:
new_mesh->Face(face_loc)->vertices.insert(vertices.begin()+vnum+1, new_vertices[j]);
यह किया जाना चाहिए था:
new_mesh->Face(face_loc)->vertices.insert(new_mesg->Face(face_loc)->vertices.begin()+vnum+1, new_vertices[j]);
पहली पंक्ति कुछ अन्य चर कहा कोने, नहीं जिसका आप करना चाहते हैं के शुरू करने के सम्मिलन बिंदु रिश्तेदार देता है में डालें।
यह हमेशा इन बातों को लपेट के लिए अच्छा है:
template <typename T>
T& insert_at(T& pContainer, size_t pIndex, const T::value_type& pValue)
{
pContainer.insert(pContainer.begin() + pIndex, pValue);
return pContainer;
}
कि यह करना चाहिए। अब एक हटाया गया उत्तर है कि आप एक सूचकांक से एक इटरेटर बना सकते हैं, लेकिन मैंने इसे पहले कभी नहीं देखा है। यदि यह सच है, तो निश्चित रूप से जाने का रास्ता है; मैं अब इसके लिए देख रहा हूँ।
यह वही करना चाहिए जो आप चाहते हैं।
vector<int>myVec(3);
myVec.insert(myVec.begin() + INTEGER_OFFSET, DATA);
कृपया ध्यान रखें कि वेक्टर पुन: आवंटित होने पर इटरेटर्स को अमान्य कर दिया जा सकता है। कृपया यह site देखें।
संपादित करें:
myVec.insert(INDEX, DATA);
अगर मैं सही ढंग से याद है, इस ठीक होना चाहिए: मैं क्यों अन्य जवाब गायब हो गया ... लेकिन एक और व्यक्ति की तर्ज पर कुछ उल्लेख यकीन नहीं है।
मेरी गलती को पकड़ने के लिए धन्यवाद ... चीजों को शून्य करने की मेरी आदत मुझे बेहतर समझ गई है। कोड में गलती भी सही है। – nevets1219
जब मैं यह new_mesh-> चेहरा (face_loc) -> शिखर [vnum] = new_vertices [new_vertices.size() - 1]; new_mesh-> चेहरा (face_loc) -> vertices.insert (vertices.begin() + vnum + 1, new_vertices [j]), मुझे डालने के बाद एक सीजी गलती मिलती है। यहां, जे = 0, vnum = 0, vertices std है: वेक्टर प्रकार – myx
@myx: क्या कोई कारण है कि आप 'std :: vector' का उपयोग नहीं कर रहे हैं? – GManNickG
- 1. वेक्टर में डुप्लिकेट तत्व कैसे डालें?
- 2. सी # में वेक्टर, दिशा (इकाई वेक्टर), प्वाइंट
- 3. सी ++ वेक्टर पर/[] ऑपरेटर गति
- 4. एचटीएमएल दस्तावेज़ में चयनित स्थिति में कोई तत्व कैसे डालें?
- 5. सी ++ वेक्टर
- 6. एक निर्दिष्ट स्थान पर सरणी में डालें
- 7. वेक्टर सी ++
- 8. वेक्टर :: सी ++
- 9. सी ++ - वेक्टर
- 10. सी ++ वेक्टर
- 11. सी ++ वेक्टर
- 12. दो ज्ञात रंग
- 13. वेक्टर स्थिर आकार
- 14. एमपीआई (सी ++) में वेक्टर उपयोग
- 15. सी # पार्स स्ट्रिंग रनटाइम पर ज्ञात टाइप करने के लिए
- 16. सी # 0-1 ज्ञात योग और सेट
- 17. सी ++ वेक्टर सूचक/संदर्भ समस्या
- 18. स्कैला विशिष्ट स्थानों पर सूची में डालें
- 19. एचटीएमएल में छवियों पर पाठ कैसे डालें?
- 20. सी ++ में निर्दिष्ट स्थिति का उपयोग कर वेक्टर में तत्व कैसे प्राप्त करें?
- 21. टी-एसक्यूएल डालने के लिए ट्रिगर डालें, एकाधिक टेबल पर स्थिति पर अपडेट करें
- 22. सी ++ वेक्टर push_back
- 23. सी ++ वेक्टर पॉइंटर
- 24. आकार() std :: वेक्टर (सी ++)
- 25. वेक्टर रिजर्व सी ++
- 26. डेटाबेस में छवि डालें
- 27. सी ++ वेक्टर प्रकार
- 28. वर्डप्रेस साइट पर एएसपी.नेट डालें
- 29. सी इडियम्स और छोटे ज्ञात तथ्यों
- 30. सी ++ किसी अन्य वेक्टर
वास्तव में मेरी विधि थोड़ा अनावश्यक है। लुका ने बताया कि आप इटेटरेटर को पुनः प्राप्त करने के बारे में चिंता किए बिना आसानी से इंडेक्स का उपयोग कर सकते हैं। – nevets1219
आप नहीं कर सकते - कोई 'डालने' विधि नहीं है जो स्थिति लेती है, सभी तीन अधिभार इसे इटरेटर लेते हैं, शायद यही कारण है कि दूसरे व्यक्ति ने अपना जवाब हटा दिया। –
ध्यान दें कि एक वेक्टर के बीच में डालना काफी धीमा है, यदि आप ऐसा करते हैं तो आपको कुछ अन्य कंटेनर –