将向量转换为数组

时间:2014-04-13 04:44:05

标签: c++ arrays pointers vector

我无法转换类型向量<矢量>到目前为止,我已尝试做以下事情(在/ 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

1 个答案:

答案 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];
    }

并避免整个混乱。