C 标准的哪一部分要求set ::擦除呼叫灾难源
What section of the C++ standard requires that set::erase calls destructors promptly
c 11标准的哪个部分(这是标准草案的副本)需要诸如std :: set,std :: map,std,std,std :: unordered_set和std之类的关联容器:: unordered_map立即调用从中删除的对象的破坏者?
换句话说 - 允许允许符合标准的关联容器延迟(不是Elide!)他们存储的键和值的键和/或值击路仪的呼叫?
如果不是,则标准中的哪个部分禁止它?
我问,因为我对关联容器中的懒惰删除(有时称为弱删除)感兴趣。这是一种从实际数据保留的结构中"擦除"键(或键/值对)的方法,但包含它的节点被标记为已死。这些有时被称为墓碑。它们用于许多有关数据结构的理论论文,有时在实践中使用。
一个非常简单的示例是在开放式的哈希表中删除,有时用墓碑实现。当最终重建哈希表时,所有的破坏者都会被调用,并且可以实际删除和删除墓碑键/值对。
表中有一般要求的关联容器,这些容器描述了erase
调用的要求。
例如。a.erase(q)
|擦除q
指向的元素。
map
的元素类型是一对键和值。对"擦除"没有明智的解释,不涉及元素的适当破坏(密钥和价值)。我怀疑标准中这种情况有什么明确的措辞。
相关文章:
- 引用一个已擦除类型(void*)的指针
- 擦除while循环中迭代的元素
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- C++擦除(如果存在)
- 在映射擦除c++期间执行循环的次数
- 为什么擦除方法会影响结束方法
- C++ 字符串类擦除成员函数的时空复杂性
- 类型擦除的std::function与虚拟函数调用的开销
- C++14 中unordered_map矢量和擦除删除成语的奇怪行为
- C++ 擦除函数中需要澄清
- 循环挂起迭代的 std::擦除 on std::list
- 擦除许多矢量元素,同时使用'auto'
- 如何擦除冗余输入?
- C++ STL 设置按值擦除
- 如何在C++中允许成员函数的自定义返回类型进行类型擦除?
- 为什么我的向量::擦除调用会抛出"vector subscript out of range"?
- 如何在写入文件时擦除最后一个逗号
- C++:std::ofstream 方法 open() 在第二次迭代时擦除打开的 ifstream 文件
- 双链表的擦除值函数,未知错误
- C 标准的哪一部分要求set ::擦除呼叫灾难源