问问题
1102 次
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 回答