2013-01-09 8 views
19

मेरे पास एक वेक्टर है और मैं इसे फ़ाइल में लिखना और पढ़ना चाहता हूं लेकिन sizeof ऑपरेटर का उपयोग करके वेक्टर के तार्किक आकार को निर्धारित करना संभव नहीं है।मैं std :: वेक्टर के आकार/लंबाई (बाइट्स में) कैसे खोज सकता हूं?

तो मैं क्या करूँ?

+1

यही कारण है कि उनके पास 'आकार' फ़ंक्शन है। सभी तत्वों के माध्यम से जाने पर, हालांकि, आकार जानने के लिए इटेटरेटर अधिक प्राकृतिक विकल्प हैं। – chris

+0

फ़ाइल में इसे कैसे लिखना तत्वों के प्रकार पर निर्भर करता है - सबसे पहले आपको यह जानने की आवश्यकता है कि फ़ाइल (और कैसे) उन्हें फ़ाइल में लिखा जा सकता है। प्रलेखन को पढ़ने के लिए –

+5

-1। –

उत्तर

37

एक सी ++ std :: वेक्टर में एक विधि size() है जो इसका आकार देता है।

संपादित करें: जैसा कि मुझे अब मिल गया है, आपको दिए गए वेक्टर उपयोगों की स्मृति की गणना करने की आवश्यकता है। आप इसके लिए आकार का उपयोग नहीं कर सकते क्योंकि एक वेक्टर गतिशील स्मृति का उपयोग करता है और केवल अपने तत्व युक्त गतिशील सरणी का सूचक होता है। तो मेरा सबसे अच्छा सुझाव तत्वों की संख्या के अनुसार प्रत्येक तत्व को स्मृति को गुणा करना होगा। नोट यह फिर से काम नहीं करेगा अगर ऑब्जेक्ट्स कुछ गतिशील आवंटित वस्तुओं को पॉइंटर संग्रहीत करता है - तो आप फिर से अपने आकारों की गणना करने के लिए अलग-अलग होंगे।

सी ++ में बाइट्स में वेक्टर आकार की मेमोरी की गणना करने का कोई आसान तरीका नहीं है जिसे मैं जानता हूं।

+1

कर सकें ** आप मेमोरी आकार ** को मापना चाहते हैं ** इस वेक्टर की आवश्यकता है? –

+0

हे मेरे वेक्टर केवल इसका आकार पाने के लिए अधिक जटिल है क्योंकि यह किसी ऑब्जेक्ट से बना है जो उसने कुछ वैक्टरों और कुछ स्ट्रिंग और अन्य चीजों से बना है जो उनके पास एक ही स्थिति है, मुझे कुछ मेमोपी –

+1

मेरे संपादित उत्तर पर एक नज़र डालें –