这是我的代码:
#include <cstdlib>
#include <stdio.h>
using namespace std;
int main(int argc, char** argv) {
int a[] = {0,1,2,3,4,5,6,7};
int array_grande[3][8];
for(int m=0; m<3; m++) {
for(int i=0; i<8; i++) {
array_grande[m] = a[i];
}
}
return 0;
}
我已经将array_grande声明为一个有3个位置且每个位置为8个整数的数组,所以我想要的是一个数组数组。
array_grande = {{0,1,2,3,4,5,6,7},{0,1,2,3,4,5,6,7},{0,1,2,3,4,5,6,7}}
我制作的代码不起作用,我想这是因为array_grande
的第二个索引。任何人都可以帮我一把吗?我想尽可能地保留代码。提前致谢
答案 0 :(得分:8)
array_grande[m] = a[i];
你可能想要
array_grande[m][i] = a[i];
或者您可以使用copy
标题中的函数algorithm
:
std::copy(std::begin(a), std::end(a), array_grande[m]);
另一种方法是使用std::array
:
std::array<int, 8> a{{0,1,2,3,4,5,6,7}};
std::array<std::array<int, 8>, 3> array_grande;
for(auto& elem: array_grande)
elem = a;
或者,更简单:
std::array<int, 8> a{{0,1,2,3,4,5,6,7}};
std::array<std::array<int, 8>, 3> array_grande{{a, a, a}};
答案 1 :(得分:2)
有几种方法可以实现您的目标:
#include <cstdlib>
#include <stdio.h>
#include <memory.h>
int main(int argc, char** argv) {
int a[] = {0,1,2,3,4,5,6,7};
int array_grande[3][8];
int array_grande_2[3][8] = { {0,1,2,3,4,5,6,7}, {0,1,2,3,4,5,6,7}, {0,1,2,3,4,5,6,7} };
int array_grande_3[3][8];
int array_grande_4[3][8];
for(int m=0; m<3; m++) {
for(int i=0; i<8; i++) {
array_grande[m][i] = a[i];
}
}
for(int m=0; m<3; m++) {
for(int i=0; i<8; i++) {
array_grande_3[m][i] = i;
}
}
for(int m=0; m<3; m++) {
memcpy(&array_grande_4[m], a, 8 * sizeof(int));
}
return 0;
}
答案 2 :(得分:1)
如果你看看你的内心任务:
array_grande[m] = a[i];
您将int
(a[i]
)分配给指向int(array_grande[m]
)的数组或指针。您只需按如下方式进行更改:
array_grande[m][i] = a[i];
答案 3 :(得分:1)
#include <cstdlib>
#include <stdio.h>
using namespace std;
int main(int argc, char** argv) {
int a[] = {0,1,2,3,4,5,6,7};
int array_grande[3][8];
for(int m=0; m<3; m++) {
for(int i=0; i<8; i++) {
array_grande[m][i] = a[i];
}
}
return 0;
}
你需要在数组中添加[i],因为它是一个2 d数组。
by array_grande [m]它仍然是一个1 d数组,所以你需要添加[]以便使相同维度的tham
答案 4 :(得分:1)
int a[] = {0,1,2,3,4,5,6,7};
a[i]
代表0
1
等
int array_grande[3][8];
您创建一个int的2D数组。
array_grande[0] -> | | | | | | | | |
array_grande[1] -> | | | | | | | | |
array_grande[2] -> | | | | | | | | |
array_grande[i]
已有一个地址,因为它是一维数组。您无法为其分配a[i]
。
您需要引用每行中的位置来存储值。
for(int m=0; m<3; m++)
{
for(int i=0; i<8; i++)
{
array_grande[m][i] = a[i];
}
}
即。 *(array_grande[m] + i) = a[i]
获取行并前进至i
th 位置