Назад к вопросам
Junior — Middle
94
Каким образом можно создать расширение или наследовать функциональность контейнера std::vector в C++?
Ответ от нейросети
sobes.tech AI
В C++ класс std::vector не предназначен для наследования, так как у него нет виртуального деструктора, и наследование может привести к неопределённому поведению.
Чтобы расширить функциональность std::vector, обычно используют композицию — создают свой класс, который содержит std::vector как член, и добавляют нужные методы:
#include <vector>
template<typename T>
class MyVector {
private:
std::vector<T> data;
public:
void push_back(const T& value) {
data.push_back(value);
}
// Добавляем новые методы
void print_all() const {
for (const auto& item : data) {
std::cout << item << " ";
}
std::cout << std::endl;
}
// Можно добавить доступ к элементам и другие методы
};
Если же наследование необходимо, то нужно быть осторожным и понимать риски, связанные с отсутствием виртуального деструктора в std::vector.