2013-03-18 9 views
6

के लिए वेक्टर सामग्री निर्दिष्ट प्रतिलिपि मैं एक सदिश का निर्माण किया। (उदाहरण: 100 वें से 250 वें)सी ++ एक और वेक्टर

उत्तर

11

std::vector (this link में नंबर 4) के लिए एक कन्स्ट्रक्टर है जो दो इटरेटर लेता है। यह एक नए वेक्टर का निर्माण करता है जिसमें पहले इटरेटर (समावेशी) के सभी तत्वों को दूसरे इटरेटर (अनन्य) में शामिल किया गया है।

std::vector<std::string> partOfMero(mero.begin() + 100, mero.begin() + 250); 

इस नव-निर्मित वेक्टर में mero[249] के माध्यम से mero[100] शामिल होंगे।

+0

धन्यवाद कि ठीक काम करता है! :-) – David

+0

इसकी उलझन में इसमें 250 शामिल नहीं हैं। परिभाषा में नाम का कहना है कि '[पहला, आखिरी]' पुराने 'वेक्टर :: स्टार्ट '/' वेक्टर के बजाय 'start' /' advance' का उपयोग करने के लिए – PnotNP

5

std::vector एक निर्माता है कि दो iterators लेता है, तो आप एक सीमा कॉपी करने के लिए निर्दिष्ट कर सकते हैं:

std::vector<std::string> v1; 
std::vector<std::string>::const_iterator first = v1.begin() + 100; 
std::vector<std::string>::const_iterator last = v1.begin() + 250; 
std::vector<std::string> v2(first, last) 

यह v2 ऐसी है कि वह v1.begin()+100 से v1.begin()+250 से पहले एक के लिए सभी तत्वों की प्रतियां शामिल हैं का निर्माण करेगी।

5

आप begin का उपयोग कर पहली इटरेटर प्राप्त कर सकते हैं, और जो राशि से यह advance आप की जरूरत:

vector<int> sub(advance(begin(miro), 100), 
       advance(begin(miro), 250)); 
+1

+1 को भ्रमित कर रहा है :: ऑपरेटर + '। –

संबंधित मुद्दे