2017-09-28 3 views
0

私は、このようなプログラムを記述する必要があります。サイズが固定されている場合、配列に挿入する方法は?

The original elements of the array 
20 34 45 2 10 
Enter the index and number for insertion 
3 12 
Elements after insertion 
20 34 45 12 2 10 

私は、最初の数字を格納する配列を宣言:

int array[5] = { 20, 34, 45, 2, 10 }; 

しかし、どのように私は、この配列に挿入することができますか?

+4

コードに挿入されていません。これまで何かしようとしましたか?まず、コンパイル時にサイズを決めた配列には何も挿入しないで、すでにいっぱいです。 – CoryKramer

+7

できません - 配列は固定サイズです。代わりにベクトルを使用します。 –

+0

以前の内容と新しい要素に適合するサイズの新しい配列を作成できます。以前の内容を新しい配列にコピーし、古い配列を削除します。 – Mark

答えて

-4

私の回答は大きく変更されました。してください、それはすでに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を使用する必要があります。

+3

OPへの注意 - この「解決策」は、あなたが求めたことをしません。 –

+0

私は私の答えを大きく変えました。可能であれば、誰でもそれを見直して解除することができますか? – boriaz50

+0

@ boriaz50:投票システムの弱点は、有権者に変更が通知されないことです。したがって、投票者に連絡して下見を求めることはできません。おそらくあなたのその後の(20!)編集は新しい(上の)有権者を引きつけるでしょう。 – halfer

2

C++の配列はサイズが固定されているため、5つのintの配列は5つ以上のintを保持することはできません。 リストやベクトルなどの他のデータ構造を調べたり、配列を宣言して必要なすべてのオブジェクトを格納できる大きさにすることができます。 他のすべての要素を可能な限り移動させることなく、挿入を行うリンクリストを調べることができます。

2

C++の用語では、 'array'はCスタイルの配列で、ほとんど使用しないでください。 です。あなたはとにかくサイズの固定されたもの、あなたがstd::arrayを使用する可能性がある場合、それはなど

を(例えば[]とインデックスなど)のアレイ・セマンティクスを持ってプラスinsertのような なものの代わりにstd::vector、 を使用してください。

#include <iostream> 
#include <vector> 

using namespace std; 

int main() 
{ 
    // vector is just as convenient as an array to initialize 
    vector<int> array = { 20, 34, 45, 2, 10 }; 

    cout << "The original elements of the array" << endl; 
    // you can use range-based for loops with containers 
    for (auto val : array) 
     cout << val << ' '; 
    cout << endl; 

    int index; 
    int number; 

    cout << "Enter the index and number for insertion" << endl; 
    cin >> index; 
    cin >> number; 

    // vector support insert, and many other operations 
    array.insert(array.begin()+index, number); 

    cout << "Elements after insertion" << endl; 
    for (auto val : array) 
     cout << val << ' '; 
    cout << endl; 
} 
+0

[こちらで試してみてください](http://coliru.stacked-crooked.com/a/ddc9caa171ecc10c) – sp2danny

関連する問題