- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道 clear() 操作的复杂性与容器的大小成线性关系,因为必须调用析构函数。但是原始类型(和 POD)呢?似乎最好的办法是将向量大小设置为 0,以便复杂度保持不变。
如果这是可能的,std::unordered_map 也可以吗?
最佳答案
It seems the best thing to do would be to set the vector size to 0, so that the complexity is constant.
vector
中的元素数量成线性关系。 .因此,设置
vector
的大小为零比调用
clear()
没有任何优势。 - 两者本质上是一样的。
bits/stl_vector.h
中的源代码)通过使用部分模板特化为原始类型提供了 O(1) 复杂度。
clear()
的执行导航到
std::_Destroy(from, to)
bits/stl_construct.h
中的函数,它执行一个重要的编译时优化:它声明了一个辅助模板类
_Destroy_aux
使用类型为
bool
的模板参数.该类具有
true
的部分特化。以及
false
的显式特化.两种特化都定义了一个名为
__destroy
的静态函数。 .如果模板参数是
true
,函数体为空;如果参数是
false
,
body contains a loop invoking T
's destructor调用
std::_Destroy(ptr)
.
std::_Destroy_aux<__has_trivial_destructor(_Value_type)>::
__destroy(__first, __last);
辅助类是根据
__has_trivial_destructor
的结果实例化的。查看。检查器返回
true
对于内置类型和
false
对于具有非平凡析构函数的类型。结果,对
__destroy
的调用变为
int
的无操作,
double
, 和其他 POD 类型。
std::unordered_map
不同于
vector
因为它可能需要删除代表 POD 对象的“哈希桶”的结构,而不是删除对象本身*。
clear
的优化至
O(1)
是可能的,但它在很大程度上取决于实现,所以我不会指望它。
O(1)
中的所有存储桶;但是,基于单独链接的实现必须一个接一个地删除存储桶。
关于vector - 当 T 是原始类型时, std::vector<T>::clear() 的复杂性是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11235975/
谁能告诉我为什么 的技术原因在 app.config 与 中无效 通常这样使用: 问题是我正在使用安装程序产品 (InstallShield) 将 xml 转换为 app.config
在Linux上,使用崇高的文本。Os.system(‘Clear’)应该只清除控制台窗口。用于Windows的os.system(‘cls’)。但它回来的时候和我不一样。。代码:。退货:。为什么在Cl
这个问题在这里已经有了答案: How can I force the STL memory cache to clear? (2 个答案) 关闭 6 年前。 我在 Solaris 10 上使用 g+
official docs关于 .clear() 我不是很清楚。他们说: Erases all AsyncStorage for all clients, libraries, etc. You pr
我有这段代码可以清除 C# WebBrowser 控件中的缓存。它的问题是它还会清除 cookie。在整个互联网上,我似乎是唯一一个不想这样的人。 我需要维护 cookie,但要丢弃缓存。 特别感兴趣
我记得直接在 DataTable 上调用的一些方法/属性之间存在差异。类,以及 DataTable.Rows 上同名的方法/属性属性(property)。 (可能是我读到这篇文章的 RowCount/
在 Unity 的 Camera组件中有一个属性清除标志,它允许从四个选项中进行选择:天空盒、纯色、仅深度和不清除。 正如文档所说: Don’t clear This mode does not cl
我无法找出为什么我的函数没有被调用。我将 alert("test") 放在那里只是为了测试函数是否被调用,而事实并非如此。 HTML: JS: function clear(price,quanti
我有 2 个数组列表: ArrayList> res= new ArrayList(); ArrayList data= new ArrayList(); 在我将结果集添加到子项并将子项附加到父项后,
正如主题所述..哪个版本更有效,为什么? std::vector a; .. a.clear(); 或 std::vector a; .. if(!a.empty()) a.clear(); 最佳
我包含了定义函数“clear()”的“PDCurses/curses.h”,然后当我使用“std::wstring::clear()”时,msvc-10.0 编译器报告错误。当我在包含后使用“#und
Session.Clear() 与 Session.Contents.Clear() 有什么区别? 我想清除所有 session 变量。 谢谢。 最佳答案 根据反射器,没有差异。 Session.Co
QPointer有一个方法, clear() . Clears this QPointer object. 我不确定“清晰”的确切含义。在我看来,这可能意味着 它会删除您引用的指针。 或 它取消附加您
在 string::clear 函数的描述中,它说: clear: Erases the contents of the string, which becomes an empty string (
我有两个不同的 Mathematica 笔记本,它们具有相似但功能不同的功能。当它们是唯一打开的笔记本时,两者都可以正常工作。尽管我(自由地)使用 Clear[] 来清除相关变量,但其中一个在另一个笔
有没有办法扩展 Symfony 2 cache:clear命令来清除 APC 还是执行一些其他逻辑? 最佳答案 您可以使用 ApcBundle去做这个。 关于php - 扩展 Symfony 2 缓存
我正在尝试使用 html 和 css 制作一个简单的信息网站,并使用 960 网格,因为该网站将具有分栏结构。 当我将标题 h1 float 到左侧(它有 Logo 图像,我正在使用 css 添加图像
我刚刚意识到: 在一系列 float div 导致布局破坏之后,同时 工作正常。 谁能解释一下? 这是 CSS: div.clear { clear:both; } 最佳答案 如果您将
这两个命令等效吗?如果不是,有什么区别? 最佳答案 rake 任务仅清除存储在文件系统 "#{Rails.root}/tmp/cache" 中的文件。这是该任务的代码。 namespace :cach
在STM32F407上初始化USART1时,我在启用TC中断时遇到了问题。一旦 USART RCC 启用,SR 中的 Tcflags就会被设置(“1”),而在启用 TC 中断之前清除该标志对我来说已经
我是一名优秀的程序员,十分优秀!