【问题标题】:STL nested vector of 2 objects2 个对象的 STL 嵌套向量
【发布时间】:2014-11-16 14:48:18
【问题描述】:

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

    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.
    }

【问题讨论】:

  • 这里的“嵌套”是什么意思?这里的地图可能会很好。我建议用户有一个指向其已订购产品的指针向量。
  • @NeilKirk 感谢您的回复。好的,那么你将如何为每个用户存储指针向量?我需要使用嵌套向量吗?我正在考虑这种实现方法 vector > customers;
  • 作为用户的成员,vector<Products*> 我不知道你为什么想要一个向量的向量。
  • @NeilKirk 你是想说创建一维向量作为这样的存储:{John bread, John milk},而不是创建 2 个单独的向量,其中外部向量将存储对象,内部向量将存储多个产品?
  • 你有一个可用产品的向量作为一种数据库。用户包含指向此数据库内的指针向量。假设每个用户最多 1 个产品。否则,您可以使用产品指针映射到购买的数量。

标签: c++ vector stl


【解决方案1】:

如果您还没有弄清楚,您的答案:

#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;
    }
}

当然有很多方法可以插入和读取表单映射,但它是为您的开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 2011-01-03
    • 2016-10-16
    • 1970-01-01
    • 2011-11-10
    • 2020-10-23
    相关资源
    最近更新 更多