C++中vector和数组之间的转换及其效率问题

您所在的位置:网站首页 std::vector赋值 C++中vector和数组之间的转换及其效率问题

C++中vector和数组之间的转换及其效率问题

2023-08-14 20:48| 来源: 网络整理| 查看: 265

因为一些原因,本人遇到需要频繁把vector与数组之间转换的情况,于是就分析了一下两个之间转换的实施以及相关的效率问题。

数组转换为vector

众所周知,一维vector中的元素存储是顺序连续的,所以我们可以通过访问第一个元素的地址以及元素的数量来访问一系列的元素。因此,我们可以采取如下操作来对vector进行访问和转换: 先创造一个数组

int array_size = 1000; double **array = (double **)malloc(sizeof(double *) * array_size); for (int i = 0; i // 直接复制每一个值 for (int j = 0; j vector t(array_size, vector(array_size)); for (int i = 0; i vector tt(array_size, vector(array_size)); for (int i = 0; i vector ttt(array_size, vector(array_size)); for (int i = 0; i for (int j = 0; j array1[i] = &v[i][0]; } method2 double **array2 = (double **)malloc(sizeof(double *) * array_size); // method2 直接复制每一个值 for (int i = 0; i array2[i][j] = v[i][j]; } } method3 double **array = (double **)malloc(sizeof(double *) * array_size); for (int i = 0; i array1[i] = &v[i][0]; } end = clock(); cost += (double)(end - begin) / CLOCKS_PER_SEC; printf("method 1 cost: %lf secs\n", cost); // method2 begin = clock(); double **array2 = (double **)malloc(sizeof(double *) * array_size); for (int i = 0; i array2[i][j] = v[i][j]; } } end = clock(); cost = (double)(end - begin) / CLOCKS_PER_SEC; printf("method 2 cost: %lf secs\n", cost); // method3 begin = clock(); double **array3 = (double **)malloc(sizeof(double *) * array_size); for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3