Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 哪一个更快?_C++_Vector - Fatal编程技术网

C++ 哪一个更快?

C++ 哪一个更快?,c++,vector,C++,Vector,我想知道如果嵌套向量总是有2个元素,那么使用std::vector会更快,还是使用std::vector会更快,其中MyPoint的定义如下: struct MyPoint { double Point[2]; }; 谢谢我想在第二个示例中,您的意思是:std::vector?是的,这种变体会更有效。例如,您可以更轻松地保留大量内存,并且总体上您将不得不进行更少的分配 在第二个示例中,您是指std::vector,而不是MyPoint吗?这比在向量中包含向量要好得多。向量更可取,因为MyP

我想知道如果嵌套向量总是有2个元素,那么使用
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
    的速度会大大加快。