运算符重载STL的性能损失是什么

use*_*855 0 c++ java memory-leaks stl

我很喜欢STL.它使编码算法非常方便,因为它为您提供了所有原语,如parition,find,binary_search,iterators,priority_queue等.另外,您根本不必担心内存泄漏.

我唯一关心的是运算符重载的性能损失,这是使STL工作所必需的.为了比较,我认为它依赖于==提供所需的语义.如果我们将类添加到容器中,我们需要重载==运算符.

为方便起见,我失去了多少效率?

关于内存泄漏的另一个问题:

  1. 使用STL容器时是否会发生内存泄漏?
  2. Java中是否会发生内存泄漏?

CB *_*ley 10

在泛型类型上使用stl algortithms时,必须以某种方式提供比较逻辑.运算符重载没有任何其他函数的性能损失,并且可以(像任何其他函数一样)内联以删除任何函数调用开销.

许多标准容器和算法也使用std::less,因此默认情况下<而不是==.

标准容器本身不会泄漏,但您可以使用它们来保存对象(例如指针),这些对象不一定会清理它们"拥有"的内存.

在java中泄漏内存很困难,但这并不意味着你不会因为没有良好的对象所有权语义而陷入麻烦,并不意味着你不能用尽所有可用的内存并崩溃.