私の回答は大きく変更されました。してください、それはすでにdownvotedされているので、downvoteしないでください。
もちろん、この固定サイズの配列には挿入できません。そして、必要なことをするには2つの方法があります。
最初の方法は、必要なときに十分なメモリを割り当てることです。std::vector
はこのタスクに成功します。
vector<int> arr { 20, 34, 45, 2, 10 };
size_t index;
int number;
// input index and number
arr.insert(arr.begin() + index, number);
第二の方法は、要素の任意の潜在的な数を格納するために十分なメモリが確保されます。あなたの場合、挿入された番号を格納する要素をもう1つ予約してください。 std::array
を使用することが好ましい。
const size_t N { 5 };
array<int, N + 1> arr { 20, 34, 45, 2, 10 };
size_t index;
int number;
// input index and number
for (size_t i = N; i > index; --i) {
arr[i] = arr[i - 1];
}
arr[index] = number;
あなたがそのようなラボの割り当ては、多くの場合、キーボードからのユーザー入力データを必要とすること
const size_t N { 5 };
array<int, N + 1> arr { 20, 34, 45, 2, 10 };
const size_t N = 5;
int arr[N + 1] = { 20, 34, 45, 2, 10 };
に注意を置き換える、C++ 11を使用していないことを余儀なくされている場合。この場合、配列サイズは実行時にのみ認識され、
std::vector
を使用する必要があります。
コードに挿入されていません。これまで何かしようとしましたか?まず、コンパイル時にサイズを決めた配列には何も挿入しないで、すでにいっぱいです。 – CoryKramer
できません - 配列は固定サイズです。代わりにベクトルを使用します。 –
以前の内容と新しい要素に適合するサイズの新しい配列を作成できます。以前の内容を新しい配列にコピーし、古い配列を削除します。 – Mark