在下面的示例中,我有一个名为表的结构的 unorder_map。 在结构中,我可以有可以添加项目的列表吗? 我试过了,我可以添加,但是当我将一个项目添加到列表时,我似乎增加了另一张地图的大小。 所以当我遍历地图时,会有额外的空白行。
我看了相关的帖子,但不是我想要的,或者我的简单和基本的理解是不够的。
struct UserRecord {
int user_id = 0;
std::string code = "";
std::string name = "";
std::string password = "";
int role_id = 0;
int type = 0;
char status = STATUS_SUSPENDED;
std::list<std::string> orders;
std::list<std::string> bills;
std::list<std::string> trading_accounts;
};
class Users : public DBFiles {
private:
public:
std::unordered_map<std::string, UserRecord> table;
Users() {};
~Users() {};
bool Exists(std::string code);
void AddOrder(std::string user_code, std::string order_key);
void RemoveOrder(std::string user_code, std::string order_key);
bool ParseLine(std::string line, std::string file_name);
void Print();
};
...
void Users::AddOrder(std::string user_code, std::string order_key) {
table[user_code].orders.push_back(order_key); // add to list
}
我已经将它缩小到当地图的大小增加并且当我改变一个具有类似 unordered_map 结构的类时,地图的大小发生变化,列表与这个类即时无关。
似乎是内存问题。
如果不允许,那么我将删除列表,如果允许,我可以添加更多代码。
这是一个不同的类,调用时会导致另一个地图添加一个新的空白行 void Participants::AddTradingAccount(std::string par_code, std::string trading_account_code) { 表[par_code].trading_accounts.push_back(trading_account_code); // 添加到列表 }
这两个类都是另一个类中的实例。