कैसे एक std::vector<std::string>
अपने स्वयं को प्रारंभ करता है जब निम्न कोडstd :: वेक्टर की कॉपी कन्स्ट्रक्टर कैसे काम करता है?
std::vector<std::string> original;
std::vector<std::string> newVector = original;
यह के रूप में यदि प्रतिलिपि निर्माता newVector = original
दौरान std::vector<std::string> new
पर लागू किया जा सकता है, लेकिन कैसे कर रहे हैं के अंदर लाया std::string
की प्रतीत होता है orginal
? क्या वे प्रतियां या नया std::string
है? तो newVector[0]
में स्मृति original[0]
के समान है।
कारण मैं पूछता हूँ मैं क्या कहना निम्नलिखित
#include <vector>
#include <string>
using namespace std;
vector<string> globalVector;
void Initialize() {
globalVector.push_back("One");
globalVector.push_back("Two");
}
void DoStuff() {
vector<string> t = globalVector;
}
int main(void) {
Initialize();
DoStuff();
}
t
(एक गैर अनुकूलित निर्माण पर) DoStuff
के दायरे से बाहर गिर जाएगी, लेकिन अगर यह t
सिर्फ std::string
की ओर इशारा से भर जाता है ' globalVector
में, नाशक कहा जा सकता है और std::string
में इस्तेमाल किया स्मृति नष्ट कर दिया, वहाँ कहा जाता है globalVector[0]
DoStuff
के बाद कचरा std::string
के साथ भरा बनाने के लिए?
एक अखरोट खोल, मैं मूल रूप से पूछ रहा हूं, जब std::vector
की कॉपी कन्स्ट्रक्टर कहलाता है, कॉपी किए गए तत्व कैसे हैं?
बहुत यकीन है कि यह सिर्फ एक उदाहरण था, लेकिन आपके पहले कोड ब्लॉक में, 'std :: vector नया = मूल;', 'नया' कानूनी वैरिएबल नाम नहीं है। मुझे यकीन है कि आप जानते हैं कि यह एक आरक्षित कीवर्ड है। –
@ChrisA .: आप ठीक कह रहे हैं, यह सिर्फ परीक्षण कोड – chadb