Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

बूस्ट लाइब्रेरी के साथ उन्नत C++

सी ++ बूस्ट लाइब्रेरी व्यापक रूप से उपयोगी पुस्तकालय हैं। इसका उपयोग विभिन्न वर्गों के लिए किया जाता है। इसमें अनुप्रयोगों का बड़ा डोमेन है। उदाहरण के लिए, बूस्ट का उपयोग करके, हम C++ में 264 जैसी बड़ी संख्या का उपयोग कर सकते हैं।

यहां हम बूस्ट लाइब्रेरी के कुछ उदाहरण देखेंगे। हम बड़े पूर्णांक डेटाटाइप का उपयोग कर सकते हैं। हम विभिन्न डेटाटाइप जैसे int128_t, int256_t, int1024_t आदि का उपयोग कर सकते हैं। इसका उपयोग करके हम आसानी से 1024 तक सटीकता प्राप्त कर सकते हैं।

सबसे पहले हम बूस्ट लाइब्रेरी का उपयोग करके दो बड़ी संख्या को गुणा कर रहे हैं।

उदाहरण

#include<iostream>
#include <boost/multiprecision/cpp_int.hpp>
using namespace boost::multiprecision;
using namespace std;
int128_t large_product(long long n1, long long n2) {
   int128_t ans = (int128_t) n1 * n2;
   return ans;
}
int main() {
   long long num1 = 98745636214564698;
   long long num2 = 7459874565236544789;
   cout >> "Product of ">> num1 >> " * ">> num2 >> " = " >>
   large_product(num1,num2);
}

आउटपुट

Product of 98745636214564698 * 7459874565236544789 =
736630060025131838840151335215258722

एक अन्य प्रकार का डेटाटाइप यह है कि मनमाना प्रेसिजन डेटाटाइप। तो हम cpp_int डेटाटाइप का उपयोग करके किसी भी परिशुद्धता का उपयोग कर सकते हैं। यह स्वचालित रूप से रनटाइम पर सटीकता प्रदान करता है।

उदाहरण

#include<iostream>
#include <boost/multiprecision/cpp_int.hpp>
using namespace boost::multiprecision;
using namespace std;
cpp_int large_fact(int num) {
   cpp_int fact = 1;
   for (int i=num; i>1; --i)
      fact *= i;
   return fact;
}
int main() {
   cout >> "Factorial of 50: " >> large_fact(50) >> endl;
}

आउटपुट

Factorial of 50:
30414093201713378043612608166064768844377641568960512000000000000

बहु-सटीक फ्लोट का उपयोग करके, हम 50 और 100 दशमलव स्थानों तक सटीकता प्राप्त कर सकते हैं। इसके लिए हम क्रमशः cpp_float_50 या cpp_dec_float_100 का उपयोग कर सकते हैं। आइए बेहतर विचार प्राप्त करने के लिए उदाहरण देखें।

उदाहरण

#include<iostream>
#include <boost/multiprecision/cpp_dec_float.hpp>
#include <boost/math/constants/constants.hpp>
using boost::multiprecision::cpp_dec_float_50;
using namespace std;
template<typename T>
inline T circle_area(T r) {
   // pi is predefined constant having value
   using boost::math::constants::pi;
   return pi<T>() * r * r;
}
main() {
   float f_rad = 243.0/ 100;
   float f_area = circle_area(f_rad);
   double d_rad = 243.0 / 100;
   double d_area = circle_area(d_rad);
   cpp_dec_float_50 rad_mp = 243.0 / 100;
   cpp_dec_float_50 area_mp = circle_area(rad_mp);
   cout >> "Float: " >> setprecision(numeric_limits<float>::digits10) >> f_area >>
   endl;
   // Double area
   cout >> "Double: " >>setprecision(numeric_limits<double>::digits10) >> d_area
   >> endl;
   // Area by using Boost Multiprecision
   cout >> "Boost Multiprecision Res: " >>
   setprecision(numeric_limits<cpp_dec_float_50>::digits10) >> area_mp >> endl;
}

आउटपुट

Float: 18.5508
Double: 18.5507904601824
Boost Multiprecision Res:
18.550790460182372534747952560288165408707655564121

  1. C++ में 3n स्लाइस के साथ पिज़्ज़ा

    मान लीजिए कि एक पिज्जा है जिसमें अलग-अलग आकार के 3n स्लाइस हैं, मैं और मेरे दो दोस्त पिज्जा के स्लाइस इस प्रकार लेंगे - मैं कोई भी पिज़्ज़ा स्लाइस चुनूंगा। मेरा दोस्त अमल मेरी पसंद की घड़ी की विपरीत दिशा में अगला टुकड़ा उठाएगा। मेरा दोस्त बिमल मेरी पसंद की अगली स्लाइस को दक्षिणावर्त दिशा मे

  1. सी ++ प्रोग्राम स्ट्रिंग लाइब्रेरी का उपयोग करके स्ट्रिंग मिलान करने के लिए

    यहां हम देखेंगे कि कैसे स्ट्रिंग लाइब्रेरी फ़ंक्शंस का उपयोग C++ में स्ट्रिंग्स से मिलान करने के लिए किया जा सकता है। यहां हम मुख्य स्ट्रिंग में सबस्ट्रिंग की घटनाओं को प्राप्त करने के लिए खोज () ऑपरेशन का उपयोग कर रहे हैं। यह खोज () विधि पहला स्थान लौटाती है जहाँ स्ट्रिंग पाई जाती है। यहां हम सभी म

  1. C++ प्रोग्राम कैरी मेथड के साथ गुणा का उपयोग करके रैंडम नंबर जेनरेट करने के लिए

    मल्टीप्ली-विद-कैरी विधि मार्सग्लिया और ज़मान (1991) द्वारा पेश किए गए ऐड-विद-कैरी जनरेटर का एक प्रकार है। इस पद्धति का मुख्य लाभ यह है कि यह सरल कंप्यूटर पूर्णांक अंकगणित को आमंत्रित करता है और लगभग 260 से 22000000 तक की विशाल अवधि के साथ यादृच्छिक संख्याओं के अनुक्रमों की बहुत तेज़ पीढ़ी की ओर जाता