Как использовать вектор классов? Есть класс c методами sortByField и search, сортируют и ищут значения в векторе юзеров соответственно.class User
{
public:
void sortByField(vector& arr, int field);
void search(vector& arr, int field, string str);
...
private:
string fullName;
string birthDate;
...
Сам вектор объявляется в main файле. Что то мне кажется этот подход кривым, ведь метод класса работает с вектором, которого в самом классе нет, может вектор в сам класс перекинуть как поле?

21 Авг 2019 в 06:58
251 +1
0
Ответы
1

Да, можно переделать ваш класс User так, чтобы вектор был членом класса. Вы можете добавить поле вектора в класс и изменить методы sortByField и search так, чтобы они не принимали вектор как параметр. Вот пример кода:

class User
{
public:
void sortByField(int field);
void search(int field, string str);
private:
vector<User> users;
string fullName;
string birthDate;
...
};
void User::sortByField(int field)
{
// сортировка вектора по заданному полю
}
void User::search(int field, string str)
{
// поиск значения в векторе по заданному полю и строке
}
int main()
{
User user;
// заполнение вектора юзеров
user.sortByField(0); // сортировка по полю 0
user.search(1, "John"); // поиск по полю 1 и строке "John"
return 0;
}

Таким образом, вам не нужно будет передавать вектор как параметр каждый раз при вызове методов. Кроме того, работа с вектором будет более инкапсулированной внутри класса User.

20 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир