您好我见过C++ Vector vs Array (Time)。 在我的Mac上,向量需要定义时间,但在比较之后给出了胜利者的向量。 这个怎么运作 ? 我说int []比动态矢量更快?
#include <iostream>
#include <vector>
using namespace std;
#define N (100000000)
//int sd[N];
int main() {
clock_t start;
double temps;
static int sd[N];
start = clock();
for (unsigned long i=0 ; i < N ; i++){
if(sd[i]==3)
;
}
temps = (clock() - start) / (double)(CLOCKS_PER_SEC / 1000);
printf("Time: %f ms\n",temps);
vector<int>vd(N);
start = clock();
for (unsigned long i=0 ; i < N ; i++){
if(vd[i]==3)
;
}
temps = (clock() - start) / (double)(CLOCKS_PER_SEC / 1000);
printf("Time: %f ms\n",temps);
while (1)
;
return 0;
}
我有这些结果:
感谢您的解释。
另一个问题:在xcode中,为什么我看到了解析向量和静态c数组所使用的内存,我必须像代码一样去所有的内存单元格(for ... if(sd [i] ...)< / p>
感谢您的解释。
答案 0 :(得分:0)
我已经重新确定,如果我将所有c数组单元初始化为0(例如或6 ......),则c数组将更快或相等。
int main() {
clock_t start;
double temps;
static int sd[N];
for (unsigned long i=0 ; i < N ; i++){
sd[i]=0;
}
start = clock();
//puts("initialized");
for (unsigned long i=0 ; i < N ; i++){
if(sd[i]==3)
;
}
temps = (clock() - start) / (double)(CLOCKS_PER_SEC / 1000);
printf("Time: %f ms\n",temps);
//puts("initialized");
vector<int>vd(N);
start = clock();
for (unsigned long i=0 ; i < N ; i++){
if(vd[i]==3)
;
}
temps = (clock() - start) / (double)(CLOCKS_PER_SEC / 1000);
printf("Time: %f ms\n",temps);
while (1)
;
return 0;
}
我将看到xcode中使用的内存,所有单元格c数组的初始化为0。
那么另一个问题是,为什么在这种情况下(或一般情况下)初始化时更快?