Как использовать вектор классов? Есть класс 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 файле. Что то мне кажется этот подход кривым, ведь метод класса работает с вектором, которого в самом классе нет, может вектор в сам класс перекинуть как поле?
Да, можно переделать ваш класс 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.
Да, можно переделать ваш класс 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.