在编程中,我们面临各种需要使用中间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++编译器的当前状态,哪种方法在时间和空间复杂度方面更好?
最佳答案
第一个版本是正确的。几乎在所有方面它都比较简单。易于编写,易于阅读,易于理解,易于维护等。
第二个版本可能更快,但第二个版本可能没有更快。您需要先证明它具有明显的优势,然后再使用。在大多数非平凡的情况下,我猜两者之间不会有可测量的性能差异。
有时,在嵌入式编程中,避免将内容放到堆栈中很有用。在这种情况下,第二个版本将是正确的。
默认使用第一个版本;仅在可以给出充分理由的情况下才使用秒表(如果原因是性能,则应有证据表明这样做有显着好处)。