使用内部结构构建器映射

Map with an inner stuct builder

我有一个内部结构为的映射:

struct Messages {
    unsigned int id;
    string user_name;
    string content;
    time_t timestamp;

    Messages(const string& a_user_name, const string& a_content) :
        user_name(a_user_name), content(a_content), id(++last_id)
    {
        timestamp = time(0);
    }
};

map<unsigned int, Messages> Global_messages;

当我尝试访问元素时:

cout << Global_messages[i].id;

它给我一个关于没有合适的构建器的错误。

std::map::operator[] 要求值是默认可构造的,Messages 不是这种情况。您必须使用其他接口作为 insert/emplace 来填充地图和 atfind 来检索值