Кратко:
Шаблонные контейнерные классы определяются с использованием шаблонов (template
) и могут хранить объекты любого типа. Основные свойства таких классов:
- Гибкость в отношении типов данных.
- Повторное использование кода.
- Сокращение дублирования кода.
- Возможность создания безопасных и эффективных структур данных.
Примеры контейнерных классов
Вектор (std::vector
)
std::vector
- динамический массив, который может изменять свой размер во время выполнения программы.
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec; // Создание вектора для целых чисел
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
for (int i = 0; i < vec.size(); ++i) {
std::cout << vec[i] << " "; // Вывод: 1 2 3
}
return 0;
}
Список (std::list
)
std::list
- двусвязный список, который позволяет быстро вставлять и удалять элементы.
#include <iostream>
#include <list>
int main() {
std::list<int> lst; // Создание списка для целых чисел
lst.push_back(1);
lst.push_back(2);
lst.push_back(3);
for (int value : lst) {
std::cout << value << " "; // Вывод: 1 2 3
}
return 0;
}
Стек (std::stack
)
std::stack
- адаптер контейнера, предоставляющий интерфейс стека (LIFO).
#include <iostream>
#include <stack>
int main() {
std::stack<int> stk; // Создание стека для целых чисел
stk.push(1);
stk.push(2);
stk.push(3);
std::cout << "Top element: " << stk.top() << std::endl; // Вывод: 3
stk.pop();
std::cout << "Top element after pop: " << stk.top() << std::endl; // Вывод: 2
return 0;
}
Очередь (std::queue
)
std::queue
- адаптер контейнера, предоставляющий интерфейс очереди (FIFO).
#include <iostream>
#include <queue>
int main() {
std::queue<int> que; // Создание очереди для целых чисел
que.push(1);
que.push(2);
que.push(3);
std::cout << "Front element: " << que.front() << std::endl; // Вывод: 1
que.pop();
std::cout << "Front element after pop: " << que.front() << std::endl; // Вывод: 2
return 0;
}
Ассоциативные контейнеры (std::map
и std::unordered_map
)
Ассоциативные контейнеры, такие как std::map
и std::unordered_map
, хранят пары ключ-значение.
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> myMap; // Создание ассоциативного контейнера
myMap[1] = "one";
myMap[2] = "two";
myMap[3] = "three";
for (const auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl; // Вывод: 1: one, 2: two, 3: three
}
return 0;
}