我正在使用heapsort对包含结构的大型向量进行排序,并且我的代码的运行时非常慢。我想要存储一个指向struct的指针,而不是在向量中存储结构。
我的问题是,当我对事物进行排序时实际发生了什么,如果我存储指向结构的指针而不是存储结构本身会更快吗?
答案 0 :(得分:0)
当然可以。将对象存储为stl容器中的值将导致运行存储对象的复制构造函数。
通常,为了提高性能,最好存储指针。但是,一旦使用指针,就需要更加小心泄漏和异常安全。
无论如何,排序中最简单的事情就是交换算法。其中涉及复制构建:
void swap(T & a, T & b)
{
T c = a; // copy constructing
a = b; // copy constructing
b = c; // copy constructing
}
复制指针而不是更大的对象,速度要快得多。