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

सी++ में is_standard_layout टेम्पलेट

इस लेख में हम सी++ एसटीएल में काम करने, वाक्य रचना और std::is_standard_layout टेम्पलेट के उदाहरणों पर चर्चा करेंगे।

is_standard_layout एक टेम्प्लेट है जो हेडर फ़ाइल के अंतर्गत आता है। इस टेम्पलेट का उपयोग यह जांचने के लिए किया जाता है कि दिया गया प्रकार T एक मानक लेआउट है या नहीं।

C++ में एक मानक लेआउट क्या है?

मानक लेआउट प्रकार एक प्रकार है जिसमें सरल रैखिक संरचना होती है (जैसे हम सरणी में देखते हैं) और अभिगम नियंत्रण जिसे आसानी से अन्य प्रोग्रामिंग भाषाओं में लिखे गए प्रोग्राम के साथ संवाद करने के लिए उपयोग किया जा सकता है। यह एक प्रकार है जो सभी प्रोग्रामिंग भाषाओं के लिए एक कोड के विचार से लिखा जाता है।

एक मानक लेआउट वर्ग में निम्नलिखित विशेषताएं होती हैं -

  • इसमें कोई वर्चुअल फंक्शन या वर्चुअल क्लास नहीं होगी।
  • सभी वर्गों के लिए समान अभिगम नियंत्रण (सार्वजनिक, निजी, संरक्षित) होना चाहिए।
  • कोई गैर-स्थिर डेटा प्रकार नहीं है।
  • उसके पहले गैर-स्थिर डेटा प्रकार के समान कोई आधार वर्ग नहीं है।

सिंटैक्स

template <class T>is_standard_layout;

पैरामीटर

टेम्प्लेट में केवल T प्रकार का पैरामीटर हो सकता है, और जाँच करें कि T एक मानक लेआउट प्रकार है या नहीं।

रिटर्न वैल्यू

यह एक बूलियन मान देता है, यदि दिया गया प्रकार एक मानक लेआउट प्रकार है, तो सत्य है, और यदि दिया गया प्रकार एक मानक लेआउट प्रकार नहीं है, तो यह गलत है।

उदाहरण

Input: is_standard_layout<int>::value;
Output: True

Input: class A{ int a; };
class B : public A
{ int b; };
is_standard_layout<B>::value;
Output: False

उदाहरण

#include <iostream>
#include <type_traits>
using namespace std;
class TP {
   int var;
};
struct TP_2 {
   int var;
   private:
   int var_2;
};
union TP_3 {
};
int main() {
   cout << boolalpha;
   cout << "checking for is_standard_layout template for class : "<<
   is_standard_layout<TP>::value;
   cout << "\nchecking for is_standard_layout template for structure: "<<
   is_standard_layout<TP_2>::value;
   cout << "\nchecking for is_standard_layout template for union : "<<
   is_standard_layout<TP_3>::value;
   cout << "\nchecking for is_standard_layout template for char : "<<
   is_standard_layout<char>::value;
   cout << "\nchecking for is_standard_layout template for int : "<<
   is_standard_layout<int>::value;
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

checking for is_standard_layout template for class : true
checking for is_standard_layout template for structure: false
checking for is_standard_layout template for union : true
checking for is_standard_layout template for char : true
checking for is_standard_layout template for int : true

उदाहरण

#include <iostream>
#include <type_traits>
using namespace std;
class TP {
   int var;
};
class TP_2 {
   int var;
   private:
   int var_2;
};
class TP_3 {
};
int main() {
   cout << boolalpha;
   cout << "checking for is_standard_layout template for class with one variable : "<<
   is_standard_layout<TP>::value;
   cout << "\nchecking for is_standard_layout template for class with one private variable: "<<
   is_standard_layout<TP_2>::value;
   cout << "\nchecking for is_standard_layout template for class with no variable : "<<
   is_standard_layout<TP_3>::value;
   cout << "\nchecking for is_standard_layout template for int * : "<<
   is_standard_layout<int*>::value;
   cout << "\nchecking for is_standard_layout template for float : "<<
   is_standard_layout<float>::value;
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

checking for is_standard_layout template for class with one variable : true
checking for is_standard_layout template for class with one private variable: true
checking for is_standard_layout template for class with no variable : true
checking for is_standard_layout template for int * : true
checking for is_standard_layout template for float : true

  1. सी++ प्रोग्राम में खाका विशेषज्ञता?

    इस ट्यूटोरियल में, हम C++ में टेम्प्लेट विशेषज्ञता को समझने के लिए एक प्रोग्राम पर चर्चा करेंगे। सॉर्ट () जैसे मानक कार्यों का उपयोग किसी भी डेटा प्रकार के साथ किया जा सकता है और वे उनमें से प्रत्येक के साथ समान व्यवहार करते हैं। लेकिन अगर आप किसी विशेष डेटा प्रकार (यहां तक ​​कि उपयोगकर्ता परिभाषित

  1. सी ++ में टेम्पलेट विशेषज्ञता

    सी ++ में, टेम्प्लेट का उपयोग सामान्यीकृत कार्यों और कक्षाओं को बनाने के लिए किया जाता है। इसलिए हम किसी भी प्रकार के डेटा का उपयोग कर सकते हैं जैसे int, char, float, या कुछ उपयोगकर्ता परिभाषित डेटा भी टेम्प्लेट का उपयोग करके। इस खंड में, हम देखेंगे कि टेम्पलेट विशेषज्ञता का उपयोग कैसे करें। तो अब

  1. सी ++ में टेम्पलेट मेटाप्रोग्रामिंग

    जब हम एक टेम्पलेट का उपयोग करके संकलन समय पर गणना करने के लिए प्रोग्राम लिखते हैं, जिसे टेम्प्लेट मेटाप्रोग्रामिंग कहा जाता है। उदाहरण कोड #include <iostream> using namespace std; template<int n>struct power {    enum { value = 4*power<n-1>::value }; }; template<>