2
4

1 回答 1

1

问题 1

由于您正在从两个不同的源(数组x和变量i)初始化 n 个向量,因此很难避免循环。(如果您有一个已经填充了值index.assign的数组,您可以初始化向量,请参阅此链接val_order

问题2

您想将所有 n顺序值复制到一个int数组中,而memcpy似乎很方便。很遗憾,

  • 向量的每个元素都是一个val_order结构,因此即使您可以通过memcpy进行复制,它不仅会复制int *order* 值,还会复制double *value* 值
  • 此外,您正在处理vector,其内部结构不是一个简单的数组(vector允许使用常规数组无法进行的操作),因此您不能通过简单地给出地址将一堆向量复制到一个int数组,比如说,第一个向量元素到memcpy
  • 此外,memcpy无论如何都不会像你想要的那样工作,但它需要一个地址 - 因此你必须给出,例如,&index[0]......但同样,鉴于上述几点,这不是你想要的

所以你必须做另一个循环,比如

int *buf = (int *)malloc(sizeof(int)*n);
int *output = buf;
for (int i=0 ; i<n ; i++) {
   output[i] = index[i].order;
}
于 2013-05-19T15:06:32.523 回答