|
|||||||
Специализация шаблона класса, Частичная, Полная, Указатели и частичная специализация, конструктор, принимающий объект initializer_list, class std::string
Время создания: 13.06.2020 19:20
Раздел: C++ - Примеры кода - Работа на уроке
Запись: Shut913/Tetra-notes-Programming/master/base/1592065226xf40mhw015/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
#include <iostream> #include <cstring> #include <initializer_list> #include <string> using namespace std; //template <class T> //class Repository //{ //private: // T _value; //public: // Repository(T value) : _value{ value } {} // // ~Repository() {} // // void print() // { // std::cout << _value << '\n'; // } //}; // //template<> //void Repository<double>::print() //{ // cout << scientific << _value; //} // //void main() //{ // Repository<int> n(7); // Repository<double> d(8.4); // // n.print(); // d.print(); //} //// ==== Специализация шаблона класса //template <class T> //class Block //{ //private: // T _arr[8]; //public: // void set(int index, const T& val) // { // _arr[index] = val; // } // const T& get(int index) // { // return _arr[index]; // } //}; // //template<> //class Block<bool> //{ //private: // unsigned char _data; //public: // Block() : _data{} {} // void set(int index, bool value) // { // unsigned char mask = 1 << index; // // if (value) // _data |= mask; // else // _data &= ~mask; // } // bool get(int index) // { // unsigned char mask = 1 << index; // // return (_data & mask) != 0; // } //}; // //void main() //{ // Block<int> a; // for (int i{}; i < 8; i++) // a.set(i, i); // for (int i{}; i < 8; i++) // cout << a.get(i) << " "; // cout << "\n"; // // Block<bool> b; // for (int i{}; i < 8; i++) // b.set(i, i % 5); // for (int i{}; i < 8; i++) // cout << (b.get(i) ? "true" : "false") << " "; // cout << "\n"; //} // ======= Частичная специализация шаблона //template <class T, int size> //class StaticArray //{ //private: // T _array[size]; // //public: // T* getArray() { return _array; } // // T& operator[](int index) // { // return _array[index]; // } //}; // //template <typename T, int size> //void print(StaticArray<T, size>& arr) // void print(StaicArray<int, 5>& arr) //{ // for (int i{}; i < size; i++) // cout << arr[i] << ' '; // cout << "\n"; //} // ////// Полная специализация ////template<> ////void print(StaticArray<char, 14>& arr) ////{ //// for (int i{}; i < 14; i++) //// cout << arr[i]; //// cout << "\n"; ////} // //// Частичная специализация //template<int size> //void print(StaticArray<char, size>& arr) //{ // for (int i{}; i < size; i++) // cout << arr[i]; // cout << "\n"; //} // //void main() //{ // StaticArray<int, 5> a; // for (int i{}; i < 5; i++) // a[i] = i; // // print(a); // // StaticArray<char, 14> b; // strcpy_s(b.getArray(), 14, "Hello, World!"); // print(b); // // StaticArray<char, 20> c; // strcpy_s(c.getArray(), 20, "Hello, World!!!!!!!"); // print(c); //} // ==== Указатели и частичная специализация //template <class T> //class Repository //{ //private: // T _value; //public: // Repository(T value) // { // _value = value; // } // // ~Repository() // { // } // // void print() // { // std::cout << _value << '\n'; // } //}; // //template <typename T> //class Repository<T*> //{ //private: // T* _value; //public: // Repository(T* value) // { // _value = new T{ *value }; // } // ~Repository() // { // delete _value; // } // void print() // { // std::cout << (*_value) << '\n'; // } //}; // //void main() //{ // Repository<int> a(6); // a.print(); // // int x = 8; // Repository<int*> b(&x); // b.print(); // x = 10; // b.print(); //} // ===== std::initializer_list //class Container //{ //private: // int _len; // int* _arr; //public: // Container() : _len{}, _arr{nullptr} {} // // Container(int len) : _len{ len } // { // _arr = new int[_len]; // } // // // конструктор, который принимает объект initializer_list // Container(const std::initializer_list<int>& list): // Container(list.size()) // { // int count = 0; // for (auto& element : list) // { // _arr[count] = element; // ++count; // } // } // // ~Container() // { // delete[] _arr; // _arr = nullptr; // } // int getLen() { return _len; } // // int& operator[](int index) { return _arr[index]; } //}; // //void main() //{ // Container a; // // for (int i{}; i < 7; i++) // cout << a[i] << "\n"; //} // ===== class std::string // char* \0 //= – присваивание //+ – конкатенация(объединение строк) //+= – присваивание с конкатенацией //== – равенство //!= – неравенство //< – меньше // <= – меньше или равно //> – больше //>= – больше или равно //[] – индексация //void main() //{ // string str; // // str.assign(); // // str.append(); // // str.insert(); // // str.replace(); // // str.compare(); // // str.length(); // // // str.c_str(); //} |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|