STL嵌套2个对象的向量

时间:2014-11-16 04:56:29

标签: c++ vector stl

我如何创建嵌套的STL向量并关联两个类对象?目前我只考虑使用for循环遍历事务向量并比较ID,我认为这不是很有效。谢谢。我首选的实现方式是vector,我想存储用户购买的产品。许多用户都可以购买产品。

    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's purchased by the users.
    }

1 个答案:

答案 0 :(得分: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;
    }
}

当然有很多方法可以插入和阅读表单地图,但它可以帮助你开始。