gpt4 book ai didi

C++ STL : Container Recreation or Reuse after clearing?

转载 作者:可可西里 更新时间:2023-11-01 18:42:08 24 4
gpt4 key购买 nike

在编程中,我们会遇到各种需要使用中间 STL 容器的情况,如下例所示:

while(true)
{
set < int > tempSet;

for (int i = 0; i < n; i ++)
{
if (m.size() == min && m.size() <= max)
{
tempSet.insert(i);
}
}
//Some condition testing code
}

或者

set < int > tempSet;

while(true)
{
for (int i = 0; i < n; i ++)
{
if (m.size() == min && m.size() <= max)
{
tempSet.insert(i);
}
}
tempSet.clear();

//Some condition testing code
}

考虑到 C++ 编译器的现状,哪种方法在时间和空间复杂度方面更好?

最佳答案

第一个版本是正确的。它几乎在所有方面都更简单。更易于编写、更易于阅读、更易于理解、更易于维护等....

第二个版本可能更快,但也可能不会。在使用它之前,您需要证明它具有显着优势。在大多数重要情况下,我猜想两者之间不会有可衡量的性能差异。

有时在嵌入式编程中避免将东西放在堆栈上是很有用的;在这种情况下,第二个版本是正确的。

默认使用第一个版本;仅当您可以给出充分的理由时才使用第二种(如果原因是性能,那么您应该有证据表明好处是显着的)。

关于C++ STL : Container Recreation or Reuse after clearing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/217149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com