मैं कंप्यूटिंग रहा से अधिक थ्रेड से float
और इस प्रकार एक ही vector<float>
की गैर-अतिव्यापी श्रेणियों में परिणाम भंडारण:एक ही वेक्टर सुरक्षित की विभिन्न श्रेणियों के लिए std :: प्रतिलिपि एकाधिक धागे से कॉपी कर रहा है?
धागे मैं से किसी को चलाने से पहले vector::reserve
का उपयोग कर पूर्व आवंटित यह।
प्रत्येक थ्रेड में एक धागा विशिष्ट परिणामों की vector
गणना की और फिर इस तरह लक्ष्य कंटेनर में बनाई जाए:
vector<float>::iterator destination = globalVector.begin() + threadSpecificIndex;
std::copy(localVector.begin(), localVector.end(), destination);
यह एक सुरक्षित अभ्यास है?
'std :: वेक्टर :: रिजर्व' नहीं करेगा, आपको वास्तव में 'आकार बदलना होगा) - अन्यथा आप वेक्टर के वास्तविक' अंत()' से आगे लिखेंगे। – mindriot
@ मिंड्रियट टिप्पणी में जोड़ने के लिए: यदि आपके द्वारा संग्रहीत किए जाने वाले प्रकार में डिफ़ॉल्ट कन्स्ट्रक्टर नहीं है तो आप सीधे अपने प्रकार के बजाय 'boost :: वैकल्पिक' जैसे कुछ का उपयोग कर सकते हैं। इससे लाभ जोड़ा होगा जो आप बता सकते हैं कि कुछ 'वास्तविक अभी तक वास्तविक' वस्तुओं को बनाने के बिना कुछ विफल हुआ है जो स्वयं को पूरी तरह से तैयार नहीं करते हैं। वे घृणित हैं। –