我被困住了,我不知道如何创建我的阵列副本。如何使用原始内容制作我的struct Person数组的副本?
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
struct Person {
string name;
int age;
};
const int arraySize = 2;
Person arrayM[arraySize];
void createArray(Person personArray[], int SIZE);
void printArray(Person personArray[], int SIZE);
int main()
{
srand(time(NULL));
cout << "Hello world!" << endl;
createArray(arrayM, arraySize);
printArray(arrayM, arraySize);
return 0;
}
void createArray(Person personArray[], int SIZE)
{
for(int i = 0; i < arraySize; i++)
{
int age1 = rand() % 50 + 1;
int age2 = rand() % 25 + 1;
personArray[i].age = age1;
personArray[i].age = age2;
}
}
void printArray(Person personArray[], int SIZE)
{
for(int i = 0; i < SIZE; i++)
{
cout << endl;
cout << personArray[i].age << " " << personArray[i].age;
}
}
void copyStruct(Person personArray[], int SIZE)
{
int copyOfArray[SIZE];
for(int i = 0; i < SIZE; i++)
{
???
}
}
答案 0 :(得分:2)
假设,int copyOfArray[SIZE]
应该是Person copyOfArray[SIZE]
一个只是替换你的???与
copyOfArray[i] = personArray[i];
或使用basile
建议的std :: array答案 1 :(得分:2)
使用std
算法更加惯用。我还将copyOfArray重新键入Person
。
void copyStruct(Person personArray[], int SIZE)
{
Person copyOfArray[SIZE];
std::copy(
personArray,
personArray + SIZE,
+copyOfArray // + forces the array-to-pointer decay.
);
// Do something with it
}
但是,如前所述,您应该使用重载std::vector
的{{1}}或std::array
。
答案 2 :(得分:0)
这应该有效:
像这样定义'copyStruct'函数:
void copyStruct(Person destOfArray[], Person srcArray[], int SIZE)
{
for(int i = 0; i < SIZE; i++)
{
destOfArray[i].age = srcArray[i].age;
destOfArray[i].name = srcArray[i].name;
}
}
并使用类似的功能:
Person copyOfArray[arraySize];
copyStruct(copyOfArray, arrayM, arraySize);
// Now print the content of 'copyOfArray' using your 'printArray' function
printArray(copyOfArray, arraySize);