将包含指针的向量排序为Struct VS Struct

时间:2012-03-20 05:03:41

标签: sorting pointers struct

我正在使用heapsort对包含结构的大型向量进行排序,并且我的代码的运行时非常慢。我想要存储一个指向struct的指针,而不是在向量中存储结构。

我的问题是,当我对事物进行排序时实际发生了什么,如果我存储指向结构的指针而不是存储结构本身会更快吗?

1 个答案:

答案 0 :(得分:0)

当然可以。将对象存储为stl容器中的值将导致运行存储对象的复制构造函数。

通常,为了提高性能,最好存储指针。但是,一旦使用指针,就需要更加小心泄漏和异常安全。

无论如何,排序中最简单的事情就是交换算法。其中涉及复制构建:

void swap(T & a, T & b)
{
    T c = a; // copy constructing
    a = b; // copy constructing
    b = c; // copy constructing
}

复制指针而不是更大的对象,速度要快得多。