c++ - std::map 准备但不插入

标签 c++ stl map

我有一个 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/

相关文章:

c++ - 关于ipp镜像构建

c++ - 我需要调用 CloseHandle 吗?

map - 在 golang 中分配给 map

C++ 类设计——如何在基类析构函数中清理

c++ - 如何使用fork创建并行子进程

c++ - 为什么 std::hash<T> 不专用于 char*?

c++ - STL 实现中是否有中心分配双端队列或 vector ?

c++ - 何时使用 C++ forward_list

c++ - 如何从排序的数据创建 vector map

c++ - C++ 的标准映射插入语义的基本原理?