मैं एक vector<set<char> >
डेटा संरचना (लेनदेन डेटाबेस) है और मैं इसके बारे में आकार जानना चाहते हैं। जब मैं प्रत्येक set<char>
के साथ sizeof() का उपयोग करता हूं तो सेट के बावजूद आकार 24, 4 या 5 वर्ण होते हैं। बाद में, जब मैं vector<set<char> >
के साथ आकार() का उपयोग करता हूं तो आकार 12 है ... मुझे लगता है कि यह डेटा संरचना के आकार को जानने का तरीका नहीं है। कोई मदद? धन्यवाद।sizeof() एक वेक्टर
उत्तर
आप vector::size()
और set::size()
चाहते हैं।
मान लिया जाये कि v
अपने वेक्टर है, ऐसा करते हैं:
size_t size = 0;
for (vector<set<char> >::const_iterator cit = v.begin(); cit != v.end(); ++cit) {
size += cit->size();
}
sizeof()
आप वस्तु के नि: स्मृति आकार दे रहा है/टाइप यह sizeof(char)
(आमतौर पर एक बाइट) के गुणकों में करने के लिए लागू होता है। आप कंटेनर और उसके तत्वों के नि: स्मृति आकार में जानना चाहते हैं, तो आप ऐसा कर सकते हैं:
sizeof(v) + sizeof(T) * v.capacity(); // where T is the element type
क्या होगा अगर वह पहले से ही उसके वेक्टर आरक्षित करा लिया है? –
@ जॉन: क्या होगा यदि उसके पास * है? 'रिजर्व()' के पास * आकार() 'के साथ कुछ भी नहीं है। –
मुझे लगता है कि जॉन का मतलब है कि यदि आप कुछ विचार करना चाहते हैं कि वेक्टर (और सामग्री) कितनी मेमोरी पर कब्जा कर लेता है, तो आपको क्षमता को नहीं देखना चाहिए, आकार नहीं। "कंटेनर और इसके तत्वों के स्मृति में" निश्चित रूप से संदिग्ध है, लेकिन मुझे संदेह है कि वे वर्तमान में तत्वों द्वारा कब्जा कर लिया गया स्मृति की मात्रा के बजाय वेक्टर द्वारा आवंटित स्मृति की मात्रा से संबंधित समझा जा सकता है। कोड के लिए –
sizeof()
संकलन समय पर की जाती है, इसलिए वहाँ कोई रास्ता नहीं यह आपको बता कितने तत्वों सकता है इसमें अंदर है
वेक्टर वस्तु की size()
विधि का उपयोग करें। वस्तु के ही
sizeof
रिटर्न आकार। अगर यह सरणी उदाहरण के लिए यह सरणी के आकार को नहीं गिना जाएगा करने के लिए सूचक होता है, यह वेक्टर में आइटमों की संख्या पता लगाने के लिए केवल वेक्टर उपयोग के लिए .size
उपयोग vector::size()
सदस्य समारोह (32 बिट पर 4) सूचक के आकार की गणना होती है । संकेत - वे मुफ्त स्टोर पर आवंटित किए जाते हैं।
वेक्टर वास्तविक स्टोरेज में आंतरिक पॉइंटर्स का उपयोग करके कार्यान्वित किया जाता है। इसलिए आकार() हमेशा एक ही परिणाम लौटाएगा जिसमें डेटा संग्रहण स्वयं शामिल नहीं है। इसके बजाय vector::size()
विधि का उपयोग करने का प्रयास करें। यह वेक्टर में तत्वों की संख्या वापस कर देगा।
एसटीएल में vector
जब आप वेक्टर निम्नलिखित <SomeType>
अंदर टेम्पलेट पैरामीटर देना एक वर्ग टेम्पलेट है,, सी ++ संकलक प्रकार SomeType के एक वर्ग के लिए कोड उत्पन्न। तो जब आप push_back
प्रयोग करके वेक्टर पॉप्युलेट, आप वास्तव में SomeType
का एक और वस्तु डालने रहे हैं ताकि आप संकलक से .size()
का अनुरोध करते हैं तो यह आपको SomeType
वस्तुओं आप द्वारा सम्मिलित की संख्या देता है।
आशा है कि मदद करता है!
का आकार ठीक है कि यह एक आसपास का जवाब है ... किसने कहा कि वह 'push_back' का उपयोग कर रहा है और यह कैसे प्रासंगिक है? तथ्य यह है कि वेक्टर एक टेम्पलेट प्रासंगिक है? लेकिन कम से कम आपको यह मुद्दा मिला कि 'आकार()' ओपी क्या ढूंढ रहा है। –
@STingRaySC मैं ओपी को समझाने की कोशिश कर रहा था कि आकार के पास वह (/ वह) चाहता था उससे कोई लेना देना नहीं है। यह .size() विधि है जिसे वह (/ वह) ढूंढना चाहिए। –
- 1. sizeof() एक सी struct का हिस्सा - तरह
- 2. सी sizeof एक पारित कर दिया सरणी
- 3. sizeof सरणी स्पष्टीकरण
- 4. sizeof खाली वर्ग
- 5. sizeof अप्रत्याशित रूप से
- 6. C2070 - अवैध sizeof संकार्य
- 7. sizeof सदस्य गणना त्रुटि
- 8. sizeof सूचक सरणी
- 9. का उपयोग sizeof
- 10. sizeof (* इस) वर्ग परिभाषा
- 11. अलग sizeof परिणाम
- 12. x64 पर sizeof (int)?
- 13. sizeof बनाम strlen
- 14. एक वेक्टर
- 15. एक वेक्टर
- 16. एक वेक्टर
- 17. एक वेक्टर
- 18. एक वेक्टर
- 19. एक वेक्टर
- 20. एक वेक्टर
- 21. आकार() std :: वेक्टर (सी ++)
- 22. वेक्टर क्रमबद्धता
- 23. sizeof नाव (3.0) बनाम (3.0f)
- 24. sizeof (struct) रिटर्न अप्रत्याशित मूल्य
- 25. सी सूचक अंकगणित sizeof (struct)
- 26. सी ++ कैसे एक वेक्टर
- 27. एसटीएल एक वेक्टर क्लोनिंग
- 28. एक एसटीएल वेक्टर
- 29. आर एक वेक्टर
- 30. एक प्रारंभिक वेक्टर
sizeof() एक संकलन समय ऑपरेटर –