std :: vector很慢?

时间:2010-07-11 17:14:47

标签: c++ vector performance

这就是我正在做的事情。

我有一个我实例的类,它有一个std :: vector。

当我第一次实例化这个类时,这个std :: vector是空的。

我使用它的方式是我以指数方式添加并清除。例如:

添加一个数字,清除矢量:

添加2个数字,清除矢量:

添加3个数字,清除矢量

添加4个数字,清除矢量。 ......

std :: vector是我做我正在做的事情的最佳方式吗? 我试图在构造函数中保留(100,000),但这没有帮助。

我的使用可能有更好的容器吗?

由于

2 个答案:

答案 0 :(得分:11)

您的算法似乎是二次的。如果你真的需要100,000个元素,那么你需要添加一个元素1 + 2 + 3 + ... + 100,000次。那是大约5,000,000,000次操作。无论你使用的是std::vector还是手工制作的汇编语言,许多操作,无论它们多么微不足道,都会在标准电脑上花费一段时间。

答案 1 :(得分:2)

类似的东西:

struct A {
   std::vector <int> v;
   A() : v(100000) {}
};

可能就是你想要的。当你说:

A a;

这将创建一个包含所需大小的矢量的结构A(也适用于类)的实例。