如何使用std :: unordered_map :: insert_or_assign
How to use std::unordered_map::insert_or_assign
如何实现std :: unordered_map :: insert_or_assign方法?
文档:https://en.cppreference.com/w/cpp/container/unordered_map/insert_or_assign
参数:
态提示 - 迭代器到新元素的位置 插入
obj - 插入或分配
的值我对假设的提示感到困惑?
我创建了一个带有坐标类的无序地图。(我相信这里的坐标类是无关紧要的,但是如果您发现必要,请评论,然后我将显示代码)。在这种情况下,提示参数是什么?
unordered_map<Coord, Coord>& came_from;
Coord start = Coord(0,0);
Coord goal = Coord(1,1);
came_from.insert_or_assign(start, "What is suppose to be here", goal);
hint
有助于将查找与插入分开。通常与lower_bound
一起使用。
lower_bound
返回一个迭代器,指向范围内的第一个元素(第一个,最后)中的第一个元素,该元素不小于(即更大或等于)值,或者如果找不到此类元素,则最后一次。
这意味着它返回迭代器,如果键已经在地图中存在,则该键是否存在,无论是否存在。
因此,hint
对于订购 map
很有用。尽管unordered_map
也具有此功能,但由于无法找到有用的hint
,因此无法以有效的方式使用它。
因此,在unordered_map
的情况下,您可以将begin()
或end()
迭代器用作hint
。
或作为@caleth提到的,您可以使用不服用hint
的过载。
相关文章:
- 瓦尔格林德:数学函数"Conditional jump or move depends on uninitialised value(s)"
- Insert函数不适用于2 if语句C++
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 如何在C++向量中奇数元素前面加上值-1,我在使用insert函数时遇到了问题
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- 模式"allocate memory or use existing data"
- N-API include an .so or dll
- 为什么 gcc 会给我可能未初始化的警告 deque::insert 带有过滤范围
- 已解决 - C++ 的崇高文本中的"fatal error: opencv: no such file or directory"
- 将 OR 逻辑运算符从 C++ 转换为 Fortran
- CPP 中的瓦尔格林德和记忆泄漏:"Conditional jump or move depends on uninitialised values"
- 我如何将 OR 与 if 语句一起使用字符串
- 将 if 语句中的字符与 or 进行比较
- Google Or-Tools Glop:如何创建指向 const 对象的指针数组?
- 当初始值设定项是基类名时'initializer does not name a non-static data member or base class'错误
- "No such file or directory" C++标头问题
- 处理 std::enable_if<...中谓词的逻辑"OR">
- C++ 虽然语句不适用于字符串和"or"
- C++ unordered_map SIGSEGV on find() or insert()