我有一个 std:map 定义如下:
std:map<std::string country, std::vector<SomeClass> events>;
举办一些将在世界上一些国家发生的事件。
我希望我的主要功能在给定键名称的情况下创建此映射,但不插入值。 假设键是一个国家的名称。我想创建“位置”“美国”而不插入将来会发生的事件。
即使不检查 key 是否有效,我的 event() 函数也会输入一个新的
这可能吗?以某种方式输入具有“空”值的 value_pair?
更新:没有提升......
最佳答案
将插入一个空的 vector
做这个把戏?...
events.insert(std::make_pair("USA", std::vector<SomeClass>()));
然后您可以在不检查 map 值是否存在的情况下添加实际事件:
void event(const std::string& country, const SomeClass& data) {
events[country].push_back(data);
}
我不确定这是否是您要查找的内容,因为“创建“位置”“美国””的概念看起来模棱两可。 (而较早的答案似乎对它有不同的解释)。
编辑:正如评论者所指出的,甚至没有必要插入空 vector ,因为映射值是自动创建的(使用默认初始化程序)并在使用 []
时插入运算符(operator)。因此你可以做events["USA"].push_back(data)
直接。
关于c++ - std::map 准备但不插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8165267/