STL вложенный вектор из 2 объектов

0

Как я могу создать вложенный вектор STL и связать два объекта класса? В настоящее время я только думаю об итерации с использованием цикла для вектора транзакций и сравнения идентификаторов, что я считаю не очень эффективным. Спасибо. Мой предпочтительный способ реализации - это вектор, и я хочу хранить приобретенные продукты. Продукты могут быть приобретены многими пользователями.

    class Products {
    public:
       int productID; // unique
       // product information variables
    };

    // User class
    class User {
    public:
        int userID;
        int productID;
// some more variables
    };

    int main() {
    // STL vector holding productID purchased by the users.
    }
  • 0
    Что значит «вложенный» здесь? Карта, вероятно, будет хорошо здесь. Я предлагаю пользователю иметь вектор указателей на товары, которые он заказал.
  • 0
    @NeilKirk Спасибо за ваш ответ. Итак, как бы вы сохранили вектор указателей для каждого пользователя? Нужно ли использовать вложенный вектор? Я рассматривал этот вектор реализации подхода <vector <User>> клиентов;
Показать ещё 4 комментария
Теги:
vector
stl

1 ответ

0
Лучший ответ

ваш ответ, если вы еще не выяснили:

#include <iostream>
#include <map>
using namespace std;

class Products {
public:    
    int _productID;
    Products(int productID):_productID(productID){}
    Products(){}

    bool operator < (const Products & product) const {
        return _productID < product._productID;
    }
};

class User {
public:
    int _userID;
    int _productID;
    User(int userId, int productID): _userID(userId), _productID(productID){}
    User(){}
};

int main() {
    map<Products,User> mapVariable;
    User user(1,1);
    Products product(1);

    // for inserting into map
    mapVariable.insert(make_pair(product,user)); //type 1
    mapVariable[product] = user;  // type 2

    // for reading values in loop
    for(auto mapElem: mapVariable){
        cout << "productID: " <<mapElem.first._productID << endl;
        cout << "userId: " << mapElem.second._userID << endl;
    }
}

конечно, есть много способов вставить и прочитать карту формы, но ее для вашего начала.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню