C++ 如何在c+上将一个特定大小的数组填充到另一个较大的数组中+;?

C++ 如何在c+上将一个特定大小的数组填充到另一个较大的数组中+;?,c++,arrays,loops,populate,C++,Arrays,Loops,Populate,我正在尝试将一个角度数组填充到另一个具有更多元素的角度数组中: uint16_t _sector[SECTORS_MAX] = {0, 45, 90, 135, 180, 225, 270, 315}; 这个想法是,我有另一个72个元素的数组,与上面这个只有8个元素的数组相比,上面的每个角代表一个扇区,所以72个元素的数组每个扇区有9个角,而不是一个,其中每个9个角代表一个扇区。如何创建一个循环来实现这一点?因为每个扇区有9个角度,所以还需要定义角度\u MAX: #define SECTOR

我正在尝试将一个角度数组填充到另一个具有更多元素的角度数组中:

uint16_t _sector[SECTORS_MAX] = {0, 45, 90, 135, 180, 225, 270, 315};

这个想法是,我有另一个72个元素的数组,与上面这个只有8个元素的数组相比,上面的每个角代表一个扇区,所以72个元素的数组每个扇区有9个角,而不是一个,其中每个9个角代表一个扇区。如何创建一个循环来实现这一点?

因为每个扇区有9个角度,所以还需要定义角度\u MAX:

#define SECTORS_MAX 8
#define ANGLES_MAX 9
然后需要使用二维数组来存储角度:

uint16_t SectorAngles[SECTORS_MAX][ANGLES_MAX];
假设包含72个角度的数组的名称是
TotalAngles
它的定义如下:

uint16_t TotalAngles[72];
for(int i = 0; i < SECTORS_MAX; i++)
{
    for(int j = 0; j < ANGLES_MAX; j++)
    {
        SectorAngles[i][j] = TotalAngles[i*8 + j];
    }
}
现在,您可以将角度从
TotalAngles
复制到
sectoranges
,如下所示:

uint16_t TotalAngles[72];
for(int i = 0; i < SECTORS_MAX; i++)
{
    for(int j = 0; j < ANGLES_MAX; j++)
    {
        SectorAngles[i][j] = TotalAngles[i*8 + j];
    }
}
for(int i=0;i
由于每个扇区有9个角度,因此还需要定义角度_MAX:

#define SECTORS_MAX 8
#define ANGLES_MAX 9
然后需要使用二维数组来存储角度:

uint16_t SectorAngles[SECTORS_MAX][ANGLES_MAX];
假设包含72个角度的数组的名称是
TotalAngles
它的定义如下:

uint16_t TotalAngles[72];
for(int i = 0; i < SECTORS_MAX; i++)
{
    for(int j = 0; j < ANGLES_MAX; j++)
    {
        SectorAngles[i][j] = TotalAngles[i*8 + j];
    }
}
现在,您可以将角度从
TotalAngles
复制到
sectoranges
,如下所示:

uint16_t TotalAngles[72];
for(int i = 0; i < SECTORS_MAX; i++)
{
    for(int j = 0; j < ANGLES_MAX; j++)
    {
        SectorAngles[i][j] = TotalAngles[i*8 + j];
    }
}
for(int i=0;i
“我如何创建一个循环来管理它?”-具体做什么?你想要实现什么?您解释了您的数据结构,然后询问如何做到这一点,但仍然没有提供实际任务。请详细说明为什么不使用
std::vector
?默认情况下,我有一个阵列,它使用8个角度,代表距离传感器的8个不同扇区,每个角度是一个中心的中心角,宽度为45度,我想为这个传感器使用另一个驱动器,其中扇区总数为72,所以72个角代表了它的中间。但我仍然不想扩展现有阵列,因为我想在一个问题中安排72个扇区,其中前9个扇区属于原始阵列的扇区号1,即0,依此类推。您的要求很不清楚。你能说得更清楚些吗?你想怎么比较?我很困惑。那么您想要一个数组,其中元素的增量为
360/72=5
?Is
std::vectorv(72);标准::物联网(v.begin(),v.end(),0);std::transform(v.begin(),v.end(),v.begin(),[](int i){return i*5;})足够?“我如何创建一个循环来管理它?”-具体做什么?你想要实现什么?您解释了您的数据结构,然后询问如何做到这一点,但仍然没有提供实际任务。请详细说明为什么不使用
std::vector
?默认情况下,我有一个阵列,它使用8个角度,代表距离传感器的8个不同扇区,每个角度是一个中心的中心角,宽度为45度,我想为这个传感器使用另一个驱动器,其中扇区总数为72,所以72个角代表了它的中间。但我仍然不想扩展现有阵列,因为我想在一个问题中安排72个扇区,其中前9个扇区属于原始阵列的扇区号1,即0,依此类推。您的要求很不清楚。你能说得更清楚些吗?你想怎么比较?我很困惑。那么您想要一个数组,其中元素的增量为
360/72=5
?Is
std::vectorv(72);标准::物联网(v.begin(),v.end(),0);std::transform(v.begin(),v.end(),v.begin(),[](int i){return i*5;})足够?“您需要#定义角度_MAX”-如果可以使用适当的
const
constepr
变量,请不要使用预处理器宏<代码> >定义< /代码>,通常是现代C++中的一个巨大的代码气味。“您需要定义ANGLSYMAX”——请不要使用预处理器宏,当您可以使用适当的代码> const 或<代码> conxPRP变量>。在现代C++中,代码> <代码>通常是一个巨大的代码气味。