#include <vector>
#include <iostream>
#include <ctime>
using namespace std;
#define mat_size 5E4
void p_new()
{
clock_t start_time = clock();
double** mat;
mat = new double* [mat_size];
for (int i = 0; i < mat_size; i++)
mat[i] = new double[mat_size];
cout << "p_new running time : " << clock() - start_time << "ms" << endl;
for (int i = 0; i < mat_size; i++)
delete[] mat[i];
delete[] mat;
}
void vec_resize()
{
clock_t start_time = clock();
vector<vector<double>> mat;
mat.resize(mat_size);
for (int i = 0; i < mat_size; i++)
mat[i].resize(mat_size);
cout << "vec_resize running time : " << clock() - start_time << "ms" << endl;
}
void vec_reserve()
{
clock_t start_time = clock();
vector<vector<double>> mat;
mat.reserve(mat_size);
for (int i = 0; i < mat_size; i++)
mat[i].reserve(mat_size);
cout << "vec_reserve running time : " << clock() - start_time << "ms" << endl;
}
int main()
{
p_new();
vec_resize();
vec_reserve();
return 0;
}
일케 짜보면 결과는
p_new running time : 242ms vec_resize running time : 28421ms vec_reserve running time : 711ms이렇게 나오는데 벡터 resize 쓸때만 begin end size 이런거 쓸 수 있고 배열 복사도 resize만 가능함 ㄷ
행렬 더 커지면 resize는 진짜 몇시간씩 걸리는데 뭐써야댐
해당 댓글은 삭제되었습니다.
ㅇㄱㄹㅇ 벡터 최적화 최고 꿀팁 - dc App
reserve로 할당하면 배열에서 배열로 복사할때 요소 하나하나 복사밖에 못해?
나라면 리사이즈 안하고 풀에 포인터 쓸 듯