我无法转换类型向量<矢量>到目前为止,我已尝试做以下事情(在/ u / Robert Crovella的帮助下)
pos_x_h=(double *)malloc(N*sizeof(double));
pos_y_h=(double *)malloc(N*sizeof(double));
for (int i = 0; i<N; i++){
vector<double> temp = r[i];
pos_x_h[i] = temp[i][0];
pos_y_h[i] = temp[i][1];
}
这里,r是具有N个元素的位置矢量,每个元素具有x和y分量。我也尝试过做
double arr[N];
std::copy(r.begin(), r.end(), arr);
这两种尝试都没有奏效,我不知道为什么。您可以看到代码here。
答案 0 :(得分:2)
以下应该有效。请注意,我更喜欢sizeof *pos_x_h
而不是sizeof(double)
,因为前者确保大小正确,即使您更改了变量的类型(可能在另一段代码中)。 已更新 *对于C ++,您需要转换malloc
的结果。我正在考虑我的C帽......
第二次更新
更多的想法告诉我你真的不想让temp
作为载体 - 这只是让事情变得更加混乱。相反,指向r[i]
的第一个元素的地址:这个编译没有错误
pos_x_h=(double *)malloc(N*sizeof(double));
pos_y_h=(double *)malloc(N*sizeof(double));
for (int i = 0; i<N; i++){
double* temp;
temp = &r[i][0];
pos_x_h[i] = temp[0];
pos_y_h[i] = temp[1];
}
当然你可以做到
pos_x_h=(double *)malloc(N*sizeof(double));
pos_y_h=(double *)malloc(N*sizeof(double));
for (int i = 0; i<N; i++){
pos_x_h[i] = r[i][0];
pos_y_h[i] = r[i][1];
}
并避免整个混乱。