サイズの異なる 2 つの C++ 配列の内容を (定義済みの C++ 関数を使用せずに) 交換できるかどうか疑問に思っています。私のコードは次のとおりです。
#include <iostream>
#include <string>
using namespace std;
void swapNames(char a[], char b[])
{
//can be done with one temp; using two for clarity purposes
char* temp = new char[80];
char* temp2 = new char[80];
int x = 0;
while(*(b+x)!='\0')
{
*(temp+x) = *(b+x);
x=x+1;
}
x=0;
while(*(a+x)!='\0')
{
*(temp2+x) = *(a+x);
x=x+1;
}
x=0;
while(*(temp2+x)!='\0')
{
*(b+x) = *(temp2+x);
x=x+1;
}
x=0;
while(*(temp+x)!='\0')
{
*(a+x) = *(temp+x);
x=x+1;
}
}
int main()
{
char person1[] = "James";
char person2[] = "Sarah";
swapNames(person1, person2);
cout << endl << "Swap names..." << endl;
cout << endl << "Person1 is now called " << person1;
cout << "Person2 is now called " << person2 << endl;;
}
私の最初のアイデアは、person1 と person2 自体への参照を渡し、データを一時変数に格納し、それらに割り当てられたメモリを削除し、スワップされたデータで新しく作成された配列にそれらをリンクすることでした。これにより、事前定義されたメモリ制限を回避できると考えました。ただし、参照 (&) を配列に渡すことはほとんど許可されていないようです。
person1 と person2 が同じサイズの場合、上記は正常に機能します。ただし、サイズの異なる名前を使用すると、問題が発生します。これは、最初に person1 と person2 を作成したときに割り当てたメモリ ブロックを変更できないためだと思います。
また、サイズを事前定義せずに C++ で新しい配列を作成することは可能ですか? IE は、サイズに制限を設けずに一時変数を作成する方法です。