आपको std::vector<unsigned char>
या std::vector<uint8_t>
का उपयोग करना चाहिए (यदि आपके पास आधुनिक stdint.h
शीर्षलेख है)। यदि आप निश्चित आकार बफर के साथ काम कर रहे हैं तो unsigned char[]
या uint8_t[]
का उपयोग करने में कुछ भी गलत नहीं है। जहां std::vector
वास्तव में चमकता है जब आपको अक्सर अपने बफर में वृद्धि या संलग्न करने की आवश्यकता होती है। एसटीएल इटरेटर्स के पास पॉइंटर्स के समान अर्थशास्त्र होते हैं, इसलिए एसटीएल एल्गोरिदम std::vector
और सादे पुराने सरणी के साथ समान रूप से अच्छी तरह से काम करेंगे।
और जैसा कि सीएडीकर ने बताया, अभिव्यक्ति &v[0]
आपको वेक्टर के बफर में अंतर्निहित सूचक देने की गारंटी है (और यह स्मृति के एक संगत ब्लॉक होने की गारंटी है)। यह गारंटी सी ++ मानक में एक परिशिष्ट में जोड़ा गया था।
व्यक्तिगत रूप से, मैं, मनमाने ढंग से बाइट बफ़र्स में हेरफेर करने के बाद से मुझे लगता है कि यह संभावित रूप से भ्रामक है std::string
उपयोग करने से बचें चाहते हैं, लेकिन यह अभ्यास का एक अनसुना नहीं है।
स्रोत
2009-05-07 23:58:15
http://stackoverflow.com/questions/441203/proper-way-to-store-binary-data-with-c-stl –