Видео: Структуры в C++ | struct C++. Разница между структурой и классом. Изучение С++ для начинающих.#129 2024
Шаблоны структуры имеют много интересных применений, таких как создание репозитория данных, который не зависит от определенного типа. Пример StructureTemplate показывает одно такое использование.
#include с использованием пространства имен std; шаблон struct Volume {T height; T ширина; T длина; Volume () {height = 0; width = 0; length = 0;} T getvolume () {return height * width * length;} T getvolume (T H, T W, T L) {height = H; width = W; длина = L; высота возврата * ширина * длина;}}; int main () {Volume first; cout << "первый том:" << первая. getvolume () << endl; первый. высота = 2; первый. ширина = 3; первый. длина = 4; cout << "первый том:" << первая. getvolume () << endl; Том второй; cout << "второй том:" << секунда. getvolume (2. 1, 3. 2, 4. 3) << endl; cout << "height:" << second. высота << endl; cout << "width:" << second. ширина << endl; cout << "length:" << second. длина << endl; return 0;}
В этом случае структура содержит значения высоты, ширины и длины, которые код может использовать для определения тома. Структура включает конструктор для инициализации значений, поэтому даже если кто-то вызывает getvolume () без инициализации структуры, ничего плохого не произойдет.
Структура позволяет осуществлять независимый доступ к каждому из значений данных. Вы можете установить или получить их по мере необходимости.
Функция getvolume () перегружена. Вы можете вызвать его с входными значениями или без них. Код в main () полностью проверяет структуру. Вот то, что вы видите как результат из этого примера:
Первый том: 0 Первый том: 24 Второй том: 28. 896 Высота: 2. 1 Ширина: 3. 2 Длина: 4. 3
Вы можете использовать структуры для еще одна интересная цель. В стандарте C ++ вы не можете создать шаблон typedef. Например, следующий код создает ошибку при попытке ее скомпилировать:
шаблон typedef map MyDef;
Когда вы пытаетесь скомпилировать этот код в Code:: Blocks, вы увидите следующую ошибку:
ошибка: объявление шаблона 'typedef'
Однако вы можете определить typedef в шаблоне структуры. Здесь приведен пример кода StructureTemplate2.
#include #include с использованием пространства имен std; template struct MyDef {typedef map Тип;}; int main () {MyDef:: Тип брака; браки ["Том"] = "Сьюзи"; браки ["Гарри"] = "Харриет"; cout << браки ["Tom"] << endl; cout << браки [«Гарри»] << endl; return 0;}
Этот пример преодолевает ограничения C ++, помещая typedef внутри struct MyDef. Такая же структура может содержать любое количество записей typedef.
Использование typedef таким образом упрощает работу с картой.Все, о чем вам нужно беспокоиться, это тип значения - тип ключа уже определен как строка.