/
bpm242makarkosenko
/
myarray
Обзор
Документация
Войти
/
bpm242makarkosenko
/
myarray
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
main_all.cpp
87 строк
3 KB
bpm242makarkosenko
create main_all.cpp
14 апр 2025, 18:12
14 апр 2025, 18:12
2f096ea
Код
Авторство
О чём код?
#include <iostream> #include <vector> #include <list> #include <set> #include <chrono> // для измерения времени #include <string> #include "myvector.hpp" #include "templates.hpp" #include "myarray.hpp" int main() { // 1) Демонстрация шаблонных функций std::cout << "=== Шаблонная функция mySwap ===\n"; int a = 10, b = 20; std::cout << "До mySwap: a=" << a << ", b=" << b << "\n"; mySwap(a, b); std::cout << "После mySwap: a=" << a << ", b=" << b << "\n\n"; std::string s1 = "Hello", s2 = "World"; std::cout << "До mySwap: s1=" << s1 << ", s2=" << s2 << "\n"; mySwap(s1, s2); std::cout << "После mySwap: s1=" << s1 << ", s2=" << s2 << "\n\n"; std::cout << "=== Шаблонная функция container_to_string ===\n"; std::vector<int> v = {1, 2, 3}; std::list<std::string> l = {"Bart", "Lisa", "Homer"}; std::set<double> st = {3.14, 2.71, 1.0}; std::cout << "vector<int>: " << container_to_string(v) << "\n"; std::cout << "list<string>: " << container_to_string(l) << "\n"; std::cout << "set<double>: " << container_to_string(st) << "\n\n"; // 2) Демонстрация шаблонного класса MyArray std::cout << "=== Шаблонный класс MyArray ===\n"; MyArray<int, 5> arrInt; for (size_t i = 0; i < arrInt.size(); ++i) { arrInt[i] = static_cast<int>(i * 10); } std::cout << "MyArray<int,5>: "; for (size_t i = 0; i < arrInt.size(); ++i) { std::cout << arrInt[i] << " "; } std::cout << "\n"; MyArray<std::string, 3> arrStr; arrStr[0] = "Bart"; arrStr[1] = "Homer"; arrStr[2] = "Marge"; std::cout << "MyArray<string,3>: "; for (size_t i = 0; i < arrStr.size(); ++i) { std::cout << arrStr[i] << " "; } std::cout << "\n\n"; // 3) Демонстрация Move-семантики в MyVector std::cout << "=== Move-семантика в MyVector ===\n"; // а) Создаём большой MyVector и замеряем копирование size_t bigSize = 1000000; // 1 млн элементов MyVector vec1(bigSize); // Заполним чем-нибудь for (size_t i = 0; i < bigSize; ++i) { vec1[i] = static_cast<int>(i); } // Измерим время КОПИРОВАНИЯ auto startCopy = std::chrono::high_resolution_clock::now(); MyVector vec2 = vec1; // копир. конструктор auto endCopy = std::chrono::high_resolution_clock::now(); double copyTime = std::chrono::duration<double>(endCopy - startCopy).count(); // Измерим время ПЕРЕМЕЩЕНИЯ auto startMove = std::chrono::high_resolution_clock::now(); MyVector vec3 = std::move(vec1); // move-конструктор auto endMove = std::chrono::high_resolution_clock::now(); double moveTime = std::chrono::duration<double>(endMove - startMove).count(); std::cout << "Copy time: " << copyTime << " s\n"; std::cout << "Move time: " << moveTime << " s\n\n"; // Проверим, что vec1.size()==0 после move std::cout << "After move, vec1.size() = " << vec1.size() << "\n"; std::cout << "vec3.size() = " << vec3.size() << "\n"; // The end return 0; }