Что такое обобщение в c++? Дано задание: Сделать на основе класса PersonList, обобщенный класс List, способный хранить список данных любого типа. Что нужно сделать в задании и что такое обобщение в c++ ? Думаю, что в задании нужно написать шаблонный класс.
В C++ обобщение (или шаблон) это механизм, который позволяет написать код, который работает с разными типами данных, не зная их заранее. Шаблонный класс List в данном задании позволит создать список любых данных, не ограничиваясь конкретным типом.
Для создания обобщенного класса List на основе класса PersonList, его нужно объявить как шаблонный и использовать шаблонный параметр для типа данных, хранимых в списке. Например:
template <typename T> class List { private: std::vector<T> data; public: void addItem(const T& item) { data.push_back(item); } void removeItem(int index) { if (index >= 0 && index < data.size()) { data.erase(data.begin() + index); } } T getItem(int index) { if (index >= 0 && index < data.size()) { return data[index]; } // возвращаем значение по умолчанию или бросаем исключение } int getSize() { return data.size(); } }; int main() { List<int> intList; intList.addItem(1); intList.addItem(2); std::cout << intList.getItem(0) << std::endl; // должно вывести 1 List<std::string> stringList; stringList.addItem("Hello"); stringList.addItem("World"); std::cout << stringList.getItem(1) << std::endl; // должно вывести World return 0; }
Таким образом, обобщенный класс List позволяет хранить список данных любого типа, не ограничиваясь определенным типом, что делает его более универсальным и гибким.
В C++ обобщение (или шаблон) это механизм, который позволяет написать код, который работает с разными типами данных, не зная их заранее. Шаблонный класс List в данном задании позволит создать список любых данных, не ограничиваясь конкретным типом.
Для создания обобщенного класса List на основе класса PersonList, его нужно объявить как шаблонный и использовать шаблонный параметр для типа данных, хранимых в списке. Например:
template <typename T>class List {
private:
std::vector<T> data;
public:
void addItem(const T& item) {
data.push_back(item);
}
void removeItem(int index) {
if (index >= 0 && index < data.size()) {
data.erase(data.begin() + index);
}
}
T getItem(int index) {
if (index >= 0 && index < data.size()) {
return data[index];
}
// возвращаем значение по умолчанию или бросаем исключение
}
int getSize() {
return data.size();
}
};
int main() {
List<int> intList;
intList.addItem(1);
intList.addItem(2);
std::cout << intList.getItem(0) << std::endl; // должно вывести 1
List<std::string> stringList;
stringList.addItem("Hello");
stringList.addItem("World");
std::cout << stringList.getItem(1) << std::endl; // должно вывести World
return 0;
}
Таким образом, обобщенный класс List позволяет хранить список данных любого типа, не ограничиваясь определенным типом, что делает его более универсальным и гибким.