我有两个大小为3的数组array1和大小为2的array2。我希望从两个数组组成一对每个项。那是
int array1[] = {1, 2, 3};
int array2[] = {9, 4};
我希望达到的结果:
1,9
1,4
2、9
2,4
3、9
3,4
这是我尝试过的:
#include <iostream>
using namespace std;
int main(int argc, const char *argv[])
{
int array1[] = {1, 2, 3};
int array2[] = {9, 4};
int arrayOneSize = sizeof(array1);
int arrayTwoSize = sizeof(array2);
for (size_t i = 0; i < arrayOneSize; i++)
{
for (size_t j = 0; j < arrayTwoSize; j++)
{
cout << array1[i] << " , " << array2[j] << endl;
}
}
return 0;
}
但是由于某种原因,我得到了一堆奇怪的组合,例如:
1,9
1,4
1,1
1,2
1,3
1,1029505037
1,-531587312
...(它真的很长,只想稍微缩短一下结果)
0,-411331072
1,9
1,4
1,1
1,2
1,3
1,1029505037
1,-531587312
1,-411331072
很抱歉出现菜鸟问题。我对C ++还是陌生的,因此,我将非常感谢您的帮助。还有为什么我会得到不属于数组的数字?
谢谢。
答案 0 :(得分:4)
要获取数组中元素的数量,必须将其大小除以数组中元素的大小:
int arrayOneSize = sizeof(array1) / sizeof(array1[0]);
int arrayTwoSize = sizeof(array2) / sizeof(array2[0]);
Jarod42指出,您可以对阵列使用range-based for loop并绕过手动手动查找大小。
另外,可以考虑使用std::array
,或者最好使用std::vector
。这是现代C ++的实现:
#include <iostream>
#include <vector>
int main() {
std::vector vec1{ 1, 2, 3 }; // no need for <int> with C++17
std::vector vec2{ 9, 4 };
for (auto&& e1 : vec1) {
for (auto&& e2 : vec2) {
std::cout << e1 << " , " << e2
<< '\n'; // no need to flush the buffer all the time
}
}
}
答案 1 :(得分:2)
数组的大小(每个数组中的元素数)计算存在问题。
int arrayOneSize = sizeof(array1);
int arrayTwoSize = sizeof(array2);
这将是元素数量* sizeof(int),它给出了总大小。由于您仅对元素数量感兴趣,因此您宁愿这样做
int arrayOneSize = sizeof(array1)/sizeof(int);
int arrayTwoSize = sizeof(array2)/sizeof(int);
这应该给出预期的输出