如何从结构数组中提取数组
How to extract an array from a struct array?
在c++中,为了使用复数,我将结构类型"creal"定义为
typedef struct {
double re;
double im; } creal;
现在设length为初始化为
的结构数组complex_vector的元素个数creal complex_vector[length];
,然后用数据填充。
我想从"complex_vector"中提取两个数组"real_vector"answers"imag_vector"。到目前为止,我一直使用for循环:
double real_vector[length];
double imag_vector[length];
for (int n = 0; n < length; n++)
{
real_vector[n] = complex_vector[n].re;
imag_vector[n] = complex_vector[n].im;
}
我想知道是否有一种方法可以避免for循环并直接提取结构数组"complex_vector"的值来创建数组"real_vector"answers"imag_vector"。
谢谢你的帮助。
循环是不可避免的,因为你的complex_vector
中的数据是交错的
re0 im0 re1 im1 re2 im2 ... reN imN
和你的目标代表是非交错的
re0 re1 re2 ... reN
im0 im1 im2 ... imN
所以复制必须以任何方式完成。无论如何,您可以使用一些for_each魔法以更紧凑的形式编写代码,但在我看来,这只会使代码更难以理解。
编辑:
然后使用一些更复杂的矩阵类(例如在OpenCV cv::Mat_),这种复制可以通过使用相同的数据缓冲区,但修改步长来避免。但这当然是以元素访问速度变慢为代价的。
原则上没有。也许有一些方法可以编写更好的for循环或将其隐藏在库调用中,但它仍然是for循环。例如boost zip iterator或std::for_each.
然而,你的for循环是非常简单和干净的,所以我将保留它的代码。
相关文章:
- 从指向结构数组的指针中提取元素
- 在C++如何从数组中提取成员并返回成员类型的数组?
- 如何从字符数组C++中提取2个整数并将它们存储在2个变量中(初学者)
- C 仅使用指针从多维数组中提取特定列
- 将文本文件数据读入字符数组时提取运算符的歧义
- 如何在 c++ 中提取 2D 数组的列?
- 从数组中提取一对数字
- 从自定义结构数组中提取数据
- 需要根据读取的数据类型将ifstream提取到单独的数组中
- 将 __m128i?布尔数组中每个布尔字节的低位提取到打包的位图
- 无法从结构数组 C++ 中提取数据
- 如何从对象数组中提取属性数组?
- 将字符数组的一部分提取为 char*
- 使用C 从定界线拆分字符串中提取整数数组
- 如何将提取的字符串数据转换为字符数组
- QRegExp提取数组名称和索引
- C++ - 从整数数组中插入和提取字符
- 从数组中提取元音,并在另一个数组中存储ND打印
- 如何在不使用堆栈或数组的情况下从INT中提取每个数字?(C )
- 将元素范围从字符数组提取到字符串中