В настоящее время я работаю над C++ школьным заданием, и у меня есть 3 типа объектов. Клиент, прокат и тур. Заказчику нравится путешествовать и снимать. Требование состоит в том, чтобы использовать Array, Vector, Map и List для хранения этой информации на основе выбора пользователем типа структуры данных. Есть файлы данных с тысячами записей, и приложение будет их читать и создавать необходимые объекты. Например, если пользователь выбирает вектор, он будет создавать 3 вектора, содержащие вышеуказанные объекты. Затем на них будут выполнены следующие операции.
В моем основном файле заголовка приложения есть следующее.
частный:
string structureType;
Customer** customerListArray;
Tour** tourListArray;
EquipmentHire** equipmentsListArray;
vector<Customer *> customerListVector;
vector<Tour *> tourListVector;
vector<EquipmentHire *> equipmentsListVector;
std::map<string, Customer*> customerListMap;
std::map<string, Tour*> tourListMap;
std::map<string, EquipmentHire*> equipmentsListMap;
list<Customer *> customerListList;
list<Tour *> tourListList;
list<EquipmentHire *> equipmentsListList;
Затем я загружаю данные на эти объекты на основе выбора пользователя. Однако мой вопрос: нужно ли мне писать разные функции для каждого типа структур данных для преформы над операциями или есть общий интерфейс, который я могу использовать для всех из них?
Знания моего C++ очень ограничены, и необходимо использовать C++ 98.
Спасибо.
Общий интерфейс - "STL-контейнер". Это не сильный интерфейс, определенный в C++, но является понятием, что вы можете полагаться на все контейнеры STL для реализации. Поэтому вы можете использовать шаблоны для написания кода один раз, который будет применяться ко всем из них.
(Обратите внимание, что карты и векторы отличаются тем, что в картах есть std::pair<>
. На практике это можно обойти, предоставив селекторам "identity" и "map" для вашей функции поиска.)