2013-01-22 36 views
5

मुझे लगता है कि एक सी ++ लाइब्रेरी "सुरुचिपूर्ण" है यदि हेडर फाइलों की संख्या को शामिल किया जाना चाहिए जितना संभव हो सके।क्या निश्चित आकार आवंटक का एक सुरुचिपूर्ण सी ++ कार्यान्वयन है?

मुझे पता है कि Loki::SmallObjectAllocator और boost::pool जैसे मौजूदा निश्चित आकार के आवंटक मौजूद हैं। हालांकि दोनों उत्कृष्ट हैं, मुझे लगता है कि वे सुरुचिपूर्ण नहीं हैं और परियोजनाओं में सहजता से एकीकृत नहीं हैं।

ज्यादातर बार, मुझे केवल बूस्ट लाइब्रेरी का एक छोटा सा हिस्सा चाहिए, लेकिन मुझे अपनी मशीन पर पूरी लाइब्रेरी इंस्टॉल करना होगा। उदाहरण के लिए, यदि मैं बूस्ट :: पूल का उपयोग करना चाहता हूं, तो मुझे उम्मीद है कि एक हेडर फ़ाइल boost_pool.h और कार्य पूरा हो जाएगा। क्योंकि मुझे लगता है कि एक निश्चित आकार आवंटक बहुत अधिक घटकों पर इतना निर्भर नहीं होना चाहिए। मेरी राय में, आदर्श कोड ऐसा दिखाई देगा:

#include <boost_pool.h> 

int main() 
{ 
    boost::pool<int> p; 
    int* v = p.allocate(); 
} 

इस तरह के एक पुस्तकालय वहाँ मौजूद है?

+3

क्या आपने [बीसीपी] (http://www.boost.org/doc/libs/1_52_0/tools/bcp/doc/html/index.html) देखा है? बिल्कुल वही नहीं है, लेकिन इसे आसानी से एक ही शीर्षलेख में सब कुछ फेंकने के लिए शुरुआती बिंदु के रूप में उपयोग किया जा सकता है। –

+2

"मुझे आशा है कि केवल एक हेडर फ़ाइल 'बूस्ट_पूल.h'' शामिल करें" - तो, ​​एक बार काम करें और वहां सभी संबंधित चीजें रखें? गंभीरता से। – Xeo

+0

धन्यवाद। मैंने अभी बीसीपी देखा है, लेकिन पाते हैं कि इसका उपयोग करना अभी तक आसान नहीं है। मुझे लगता है कि बूस्ट में बहुत अधिक अनावश्यक निर्भरताएं हैं। – xmllmx

उत्तर

1

क्या आप जीसीसी का उपयोग कर रहे हैं? यह मानक पुस्तकालय एक्सटेंशन के रूप में कुछ निश्चित-आकार allocators साथ आता है, देखने के http://gcc.gnu.org/onlinedocs/libstdc++/manual/memory.html#allocator.ext

वे काफी स्टैंडअलोन रहे

4

आपका स्वागत है (के बारे में सुरुचिपूर्ण यकीन नहीं है, यह एक लंबे समय के बाद से मैं ठीक से अपने कोड को देखा है) mine पर। चाहे वह सुरुचिपूर्ण है या नहीं, आप तय कर सकते हैं। लेकिन यह केवल एक छोटा हेडर है जो केवल कुछ छोटे मानक शीर्षकों पर निर्भर करता है। आवंटक सी ++ 11 आवंटन आवश्यकताओं को पूरा करता है, जो सी ++ 03 आवंटन आवश्यकताओं का सबसेट है। यदि आपको इसकी आवश्यकता हो तो आप हमेशा सी ++ 03 बॉयलर प्लेट जोड़ सकते हैं।

+1

विंडोज उपयोगकर्ताओं के लिए नोट: ध्यान दें कि स्टेटस आवंटक विजुअल सी ++ 2012 नवंबर सीटीपी के तहत डीबग मोड में अभी तक काम नहीं करते हैं। कुछ डीबग जांच है जो 'std :: allocator_traits की बजाय' ऑलोकेटर :: निर्माण' का उपयोग करती है :: निर्माण' – TemplateRex