C++ 哪一个更快?
我想知道如果嵌套向量总是有2个元素,那么使用C++ 哪一个更快?,c++,vector,C++,Vector,我想知道如果嵌套向量总是有2个元素,那么使用std::vector会更快,还是使用std::vector会更快,其中MyPoint的定义如下: struct MyPoint { double Point[2]; }; 谢谢我想在第二个示例中,您的意思是:std::vector?是的,这种变体会更有效。例如,您可以更轻松地保留大量内存,并且总体上您将不得不进行更少的分配 在第二个示例中,您是指std::vector,而不是MyPoint吗?这比在向量中包含向量要好得多。向量更可取,因为MyP
std::vector
会更快,还是使用std::vector
会更快,其中MyPoint的定义如下:
struct MyPoint {
double Point[2];
};
谢谢我想在第二个示例中,您的意思是:
std::vector
?是的,这种变体会更有效。例如,您可以更轻松地保留大量内存,并且总体上您将不得不进行更少的分配
在第二个示例中,您是指
std::vector
,而不是MyPoint吗?这比在向量中包含向量要好得多。向量更可取,因为MyPoint
可能:
小于vector
(您可以使用sizeof
进行检查),和/或
减少分配。向量对象本身很小,但通常指向堆上的数据。可以通过将数据嵌入向量对象来优化小向量,以避免额外的分配,但不要指望这一点,因此
以降低初始化、销毁和复制的开销
例如,在我的32位gcc上,std::vector
的大小为12,而MyPoint
的大小为16,但向量会进行额外的分配。在64位实现中,MyPoint
几乎肯定是相同的大小,但是std::vector
可能会更大
此外,向量表示使用连续内存的大小可变、有序的容器。因此,对于大小为2的数组来说,使用向量可能会导致大小可能会发生变化,这可能有点过头了。不仅两个元素的向量速度较慢,而且动态结构始终保持2个元素(假设它不会改变)看起来也很奇怪。我将使用structmypoint{double x,y;}代码>为了方便。只要您没有测量,就编写更易于阅读的代码(在我看来,这就是使用结构的代码)。只有牺牲可读性,当您进行测量后,vector
s的vector
的速度会大大加快。