boost ट्यूटोरियल
बढ़ावा मिलने के साथ शुरुआत हो रही है
खोज…
टिप्पणियों
बूस्ट क्या है?
बूस्ट मुक्त, उच्च गुणवत्ता वाले C ++ पुस्तकालयों का एक बड़ा संग्रह है जो विषयों की एक विस्तृत श्रृंखला को कवर करता है। इसे अक्सर C ++ के लिए "दूसरा मानक पुस्तकालय" माना जाता है, क्योंकि C ++ में कई सामान्य समस्याएं बूस्ट का उपयोग करके हल की जाती हैं।
बूस्ट मुक्त सहकर्मी की समीक्षा की गई पोर्टेबल सी ++ स्रोत लाइब्रेरी प्रदान करता है।
हम उन पुस्तकालयों पर जोर देते हैं जो C ++ मानक पुस्तकालय के साथ अच्छी तरह से काम करते हैं। बूस्ट पुस्तकालयों को व्यापक रूप से उपयोगी माना जाता है, और अनुप्रयोगों के व्यापक स्पेक्ट्रम में प्रयोग करने योग्य है। बूस्ट लाइसेंस वाणिज्यिक और गैर-व्यावसायिक दोनों प्रकार के उपयोग को प्रोत्साहित करता है।
कुछ बूस्ट पुस्तकालयों ने भी C ++ 11 मानक पुस्तकालय में अपना रास्ता बना लिया है , और कुछ अन्य, जैसे Boost.Optional और Boost.Variant , C ++ 17 का हिस्सा होंगे।
बूस्ट क्या कर सकता है?
बूस्ट प्रोग्रामिंग के अधिकांश कोनों को कवर करता है। स्टैक ओवरफ्लो पर यहाँ बढ़ावा टैग विकी से :
इसके लिए पुस्तकालय शामिल हैं:
- स्ट्रिंग और टेक्स्ट प्रोसेसिंग
- कंटेनर
- iterators
- एल्गोरिदम
- फंक्शन ऑब्जेक्ट्स और उच्च-क्रम प्रोग्रामिंग
- सामान्य प्रोग्रामिंग
- टेम्प्लेट मेटाप्रोग्रामिंग
- प्रीप्रोसेसर मेटाप्रोग्रामिंग
- समवर्ती प्रोग्रामिंग
- गणित और अंक
- शुद्धता और परीक्षण
- डेटा संरचनाएं
- इमेज प्रोसेसिंग
- इनपुट आउटपुट
- अंतर-भाषा समर्थन
- स्मृति
- पदच्छेद
- प्रोग्रामिंग इंटरफेस
- विविध
- टूटे हुए कंपाइलर वर्कअराउंड
संस्करण
| संस्करण | नई लाइब्रेरी | रिलीज नोट्स | रिलीज़ की तारीख |
|---|---|---|---|
| 1.10.0 | टिप्पणियाँ | 1999/12/14 | |
| 1.11.0 | परिमेय संख्या | टिप्पणियाँ | 2000/02/01 |
| 1.12.0 | टिप्पणियाँ | 2000/02/23 | |
| 1.13.0 | उपयोगिता, प्रकार लक्षण, कॉल लक्षण, संपीडित जोड़ी | टिप्पणियाँ | 2000/02/29 |
| 1.14.0 | टिप्पणियाँ | 2000/03/05 | |
| 1.15.0 | यादृच्छिक संख्या | टिप्पणियाँ | 2000/06/17 |
| 1.16.0 | कार्यात्मक, पुनरावृत्त हेडर | टिप्पणियाँ | 2000/06/28 |
| 1.17.0 | सरणी | टिप्पणियाँ | 2000/08/03 |
| 1.18.0 | ग्राफ, नियमित अभिव्यक्ति | टिप्पणियाँ | 2000-09-28 |
| 1.19.0 | कॉन्सेप्ट चेक, पायथन, स्टेटिक एससटर, प्रॉपर्टी मैप कॉन्सेप्ट | टिप्पणियाँ | 2000/12/10 |
| 1.20.0 | रूपांतरण | टिप्पणियाँ | 2001/01/06 |
| 1.21.0 | Iterator एडाप्टर, पूल, टेस्ट | टिप्पणियाँ | 2001/03/09 |
| 1.22.0 | सीआरसी | टिप्पणियाँ | 2001/05/25 |
| 1.23.0 | कोई भी, समारोह, टोकनर, स्पेशल फंक्शंस, ऑक्टोनियन, क्वाटरनियन | टिप्पणियाँ | 2001/07/06 |
| 1.24.0 | टपल | टिप्पणियाँ | 2001/08/19 |
| 1.25.0 | धागा, बाँध | टिप्पणियाँ | 2001/10/01 |
| 1.26.0 | कॉमन फैक्टर, प्रीप्रोसेसर | टिप्पणियाँ | 2001/11/30 |
| 1.27.0 | टिप्पणियाँ | 2002/02/05 | |
| 1.28.0 | लाम्बा, आई / ओ स्टेट सेवर | टिप्पणियाँ | 2002/05/15 |
| 1.29.0 | दिनांक-समय, गतिशील बिटसेट, प्रारूप | टिप्पणियाँ | 2002/10/10 |
| 1.30.0 | फाइलसिस्टम, वैकल्पिक, अंतराल, एमपीएल, आत्मा | टिप्पणियाँ | 2003/03/19 |
| 1.31.0 | enable_if, वेरिएंट | टिप्पणियाँ | 2004/01/26 |
| 1.32.0 | असाइनमेंट, मिनमैक्स, मल्टी-इंडेक्स, संख्यात्मक रूपांतरण, कार्यक्रम विकल्प, रेंज, सीरियलाइजेशन, स्ट्रिंग, ट्रिबूल | टिप्पणियाँ | 2004-11-19 |
| 1.33.0 | इओस्ट्रीम, हैश, पैरामीटर, पॉइंटर कंटेनर, वेव | टिप्पणियाँ | 2005/08/11 |
| 1.34.0 | फ़ॉरच, स्टेटचर्ट, टीआर 1, टाइपोफ़, एक्सपेक्टिव | टिप्पणियाँ | 2007-05-12 |
| 1.35.0 | Asio, Bimap, परिपत्र बफर, फ़ंक्शन प्रकार, फ्यूजन, जीआईएल, इंटरप्रोसेस, घुसपैठ, गणित / विशेष कार्य, गणित / सांख्यिकीय वितरण, MPI, सिस्टम | टिप्पणियाँ | 2008-03-29 |
| 1.36.0 | Accumulators, अपवाद, इकाइयां, अनियंत्रित | टिप्पणियाँ | 2008-08-14 |
| 1.37.0 | आद्य | टिप्पणियाँ | 2008-11-03 |
| 1.38.0 | फ्लाईवेट, स्कोपसिट, स्वैप | टिप्पणियाँ | 2009-02-08 |
| 1.39.0 | Signals2 | टिप्पणियाँ | 2009-05-02 |
| 1.40.0 | टिप्पणियाँ | 2009-08-27 | |
| 1.41.0 | संपत्ति का पेड़ | टिप्पणियाँ | 2009-11-17 |
| 1.42.0 | UUID | टिप्पणियाँ | 2010-02-02 |
| 1.43.0 | कार्यात्मक / कारक, कार्यात्मक / आगे | टिप्पणियाँ | 2010-05-06 |
| 1.44.0 | मेटा स्टेट मशीन, बहुभुज | टिप्पणियाँ | 2010-08-13 |
| 1.45.0 | टिप्पणियाँ | 2010-11-19 | |
| 1.46.0 | आईसीएल | टिप्पणियाँ | 2011-02-21 |
| 1.46.1 | टिप्पणियाँ | 2011-03-12 | |
| 1.47.0 | क्रोनो, ज्यामिति, फीनिक्स, अनुपात | टिप्पणियाँ | 2011-07-11 |
| 1.48.0 | कंटेनर, लोकेल, चाल | टिप्पणियाँ | 2011-11-15 |
| 1.49.0 | ढेर | टिप्पणियाँ | 2012-02-24 |
| 1.50.0 | एल्गोरिथम, कार्यात्मक / अतिभारित, स्थानीयकरण, उपयोगिता / पहचान | टिप्पणियाँ | 2012-06-28 |
| 1.51.0 | प्रसंग | टिप्पणियाँ | 2012-08-20 |
| 1.52.0 | टिप्पणियाँ | 2012-11-05 | |
| 1.53.0 | परमाणु, कोराटाइन, लॉकफ्री, मल्टीप्रेशर, Odeint | टिप्पणियाँ | 2013-02-04 |
| 1.54.0 | लॉग, टीटीआई, टाइप एरासुर | टिप्पणियाँ | 2013-07-01 |
| 1.55.0 | Predef | टिप्पणियाँ | 2013-11-11 |
| 1.56.0 | संरेखित करें, टाइप करें | टिप्पणियाँ | 2014-08-07 |
| 1.57.0 | टिप्पणियाँ | 2014-11-03 | |
| 1.58.0 | एंडियन, सॉर्ट करें | टिप्पणियाँ | 2015/04/17 |
| 1.59.0 | कन्वर्ट, Coroutine2 | टिप्पणियाँ | 2015/08/13 |
| 1.60.0 | VMD | टिप्पणियाँ | 2015/12/17 |
| 1.61.0 | गणना, डीएलएल, हाना, मेटापरसे | टिप्पणियाँ | 2016/05/13 |
| 1.62.0 | फाइबर, QVM | टिप्पणियाँ | 2016/09/28 |
| 1.63.0 | टिप्पणियाँ | 2016/12/26 | |
| 1.64.0 | प्रक्रिया | टिप्पणियाँ | 2017/04/19 |
स्थापना या सेटअप
देखें शुरुआत करना बूस्ट
बूस्ट पुस्तकालयों में से अधिकांश हेडर-ही हैं, जिसका अर्थ है कि आपके पास संकलन या लिंक करने के लिए कुछ भी नहीं है।
सुनिश्चित करें कि आपको बूस्ट का सबसे हाल का संस्करण मिल रहा है:
- Www.boost.org पर जाएं
- वर्तमान रिलीज़ डाउनलोड के लिए देखें। वर्तमान में, यह यहाँ लिंक।
- अपने ऑपरेटिंग सिस्टम के लिए उपयुक्त संग्रह फ़ाइल का चयन करें, और डाउनलोड करें।
हेडर-ओनली लाइब्रेरी का उपयोग केवल संबंधित हेडर फाइलों को शामिल करके किया जा सकता है।
कुछ बूस्ट लाइब्रेरी को संकलन की आवश्यकता होती है:
- Boost.Chrono
- Boost.Context
- Boost.Filesystem
- Boost.GraphParallel
- Boost.IOStreams
- Boost.Locale
- Boost.MPI
- Boost.ProgramOptions
- Boost.Python
- Boost.Regex
- Boost.Serialization
- Boost.Signals
- Boost.System
- Boost.Thread
- Boost.Timer
- Boost.Wave
इसके अलावा, निम्नलिखित पुस्तकालयों में घटक होते हैं जिन्हें संकलित किया जाना चाहिए:
Boost.DateTime
Boost.Graph
Boost.Math
Boost.Random
Boost.Test
Boost.Exception
बूस्ट के लिए स्रोत साइट पर डाउनलोड लिंक के माध्यम से प्राप्त किया जा सकता है, जो नवीनतम संस्करण (जुलाई 2016 के अनुसार 1.61.0 ) के लिए अपने SourceForge पृष्ठ पर फिर से निर्देशित करेगा। यह किसी निर्देशिका में अनज़िप्ड (या अन-टार्ड, आदि) हो सकता है (जैसे C: \ local \ boost_1_61/0)। यह निर्देशिका तब आपके द्वारा बनाए जा रहे सॉफ़्टवेयर के लिए शामिल पथ में जोड़ी जा सकती है। इसके बाद, आप #include <boost/header/path.hpp> फाइलों में #include <boost/header/path.hpp> हेडर शामिल कर सकते हैं।
बूस्ट में अधिकांश पुस्तकालय केवल हेडर हैं। यदि आपको केवल इनकी आवश्यकता है तो उपरोक्त स्रोत वितरण की आवश्यकता है। हालाँकि, यदि आपको उन पुस्तकालयों में से किसी एक का उपयोग करने की आवश्यकता है जिसके निर्माण के लिए एक संकलित बाइनरी की आवश्यकता है, तो आपको इसकी आवश्यकता होगी।
किसी भी प्रणाली पर, सही बायनेरिज़ प्राप्त करने का सबसे विश्वसनीय तरीका उन्हें स्वयं बनाना है। ये निर्देश विंडोज या लिनक्स / यूनिक्स / पॉसिक्स के लिए कुछ अलग हैं।
विजुअल स्टूडियो के साथ विंडोज पर, पुस्तकालयों के निर्माण का एक विकल्प बूस्ट के सोर्सफॉर्ज़ पेज (जुलाई 2016 के अनुसार 1.61.0 ) से पूर्व-निर्मित पुस्तकालयों को डाउनलोड करना है। उस पृष्ठ पर आप एक इंस्टॉलर का चयन कर सकते हैं जो एक विशिष्ट विज़ुअल स्टूडियो बिल्ड या 7-ज़िप फ़ाइल (बूस्ट_एक्स_एक्सएक्स -एक्सएक्स-बिन-ऑल-32-64.7z) के लिए एक संस्करण स्थापित करेगा जिसमें सभी समर्थित विज़ुअल स्टूडियो संस्करणों के लिए बायनेरिज़ शामिल हैं। या तो इन विकल्पों में स्रोत / हेडर के साथ-साथ बायनेरिज़ भी शामिल हैं, इसलिए उपरोक्त स्रोत वितरण को डाउनलोड करने की आवश्यकता नहीं है। जब आपके पास यह हो जाए, तो किसी डायरेक्टरी में अर्क / इंस्टाल करें (जैसे C: \ local \ boost_1_61_0) और उस डायरेक्टरी को अपने शामिल पथ में जोड़ें, फिर वह निर्देशिका शामिल करें जिसमें बायनेरिज़ हो जो विज़ुअल स्टूडियो के आपके संस्करण के अनुरूप हो (उदाहरण C: \ लायब्रेरी पथ के लिए Visual Studio 2013 32-बिट प्रोजेक्ट्स के लिए स्थानीय \ boost_1_61_0 \ lib32-msvc-12.0।
बूस्ट स्थापित करना और चलाना (साइगविन)
(शुरुआती स्तर; आईडीई: सीएलओएन)
सबसे पहले, साइग्विन मिरर से बूस्ट इंस्टॉल करें: इंस्टॉलेशन खोलें, बूस्ट की खोज करें, पैकेज इंस्टॉल करें।
बूस्ट स्थापित होने के बाद: यह /usr/include/boost । यहीं सब कुछ है। सभी #include स्टेटमेंट बूस्ट फोल्डर से एक रास्ता होगा, जैसे: #include <boost/archive/text_oarchive.hpp> ।
एक बार जब आप अपनी .cpp फ़ाइलों में अपनी पसंद की बूस्ट फ़ाइलों को शामिल करते हैं, तो आपका कोड तब भी आपके पसंद के IDE में संकलित नहीं होगा जब तक कि आप पुस्तकालयों को लिंक न करें और अपने डाउनलोड किए गए बूस्ट कोड को खोजने के लिए cmake को बताएं।
अपने बूस्ट कोड की खोज करने के लिए cmake पाने के लिए,
find_package(Boost 1.60.0 COMPONENTS components_you_want)
# for example:
find_package(Boost 1.60.0 COMPONENTS serialization)
फिर, निर्देशिकाओं को शामिल करें: शामिल include_directories(${Boost_INCLUDE_DIRS})
अंत में, अपना निष्पादन योग्य जोड़ें और पुस्तकालयों को लिंक करें:
add_executable(your_target ${SOURCE_FILES})
target_link_libraries(your_target ${Boost_LIBRARIES} -any_missing_boostlibs)
अपना कार्यक्रम शुरू करने से पहले, यह देखने के लिए कि क्या कुछ भी शामिल है या अपना कोड चलाने से पहले बूस्ट पाया गया है, परीक्षण करके एक त्रुटि डंप से बचें:
if (Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(YourTarget ${SOURCE_FILES})
target_link_libraries(your_target ${Boost_LIBRARIES} -missing_libs)
endif()
मैंने शामिल किया -missing_libs क्योंकि एक त्रुटि जो आप चला सकते हैं वह यह है कि कुछ बूस्ट लाइब्रेरी या कोई अन्य लिंक नहीं किया गया हो सकता है, और आपको इसे मैन्युअल रूप से जोड़ना होगा - उदाहरण के लिए, मैंने पहले जिस लिंक को संदर्भित किया था।
सभी एक साथ, एक अंतिम CMakeLists.txt फ़ाइल कुछ इस तरह दिख सकती है:
cmake_minimum_required(VERSION 3.7)
project(your_project)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(SOURCE_FILES main.cpp tmap.cpp tmap.h)
find_package(Boost 1.60.0 COMPONENTS serialization)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(your_project ${SOURCE_FILES})
target_link_libraries(your_project ${Boost_LIBRARIES})
endif()