配列があるとします:int list[] = {1, 2, 4, 5, 6};
そして配列を中央から右にシフトし、4の代わりに3を配置したいので、次のようになります:{1, 2, 3, 4, 5, 6}
それ?ありがとうございました。要素をシフトして配列に追加する
答えて
あなたは、ベクターを使用することができない場合は、1つの解決策は、次のとおりです。
は(最後にいくつかの空の位置を有する)多くのスペースを持つ配列を作成します。すでに追加要素の数をカウントする
int * array = malloc(sizeof(int) * array_size);
利用二つの変数1が(
size
呼ばれます)配列のサイズを保存するには、別の(number_of_elements_in_the_array
と呼ばれることができます)
に追加しました位置 'x'にある要素は、配列のx <のサイズで、
int tmp = array[x]; // save the current value
array[x] = new_value; // update with the new value
int tmp2;
number_of_elements_in_the_array++;
// we reach the limited
if(number_of_elements_in_the_array == size)
{
size = 2 * size; //lets double that size
int *new_array = malloc(sizeof(int) * size);
// copy the first elements
for(int i = 0; i <= x; i++)
new_array[i] = array[i];
new_array[x+1] = tmp;
// copy the last elements
for(int i = x+1; i < number_of_elements_in_the_array; i++)
new_array[i+1] = array[i];
free(array) // free the old space
array = new_array; // update the new pointer
}
else
{
// shift the remaining elements
for(int i = x+1; i < number_of_elements_in_the_array; i++)
{
tmp2 = array[i];
array[i] = tmp;
tmp = tmp2;
}
}
制限付きで新しいアレイを作成し、古いアレイから新しいアレイにコピーし、それに応じて変数number_of_elements_in_the_array
とsize
を更新します。
免責事項:私はテストしていないので、多少のマイナーエラーがあるかもしれませんが、全体的なイデアはそこにあります。
問題はありません。コードを追加しました。 – dreamcrash
C++標準ライブラリを使用できる場合、std::vector
は配列の代わりです。それはあなたが欲しいものを行うには、専用のメソッドinsert
を持っている:あなたはどこに新しい要素を挿入することがわかっている場合
std::vector<int> v;
... // add elements 1, 2, 4, 5, 6 to it
v.insert(v.begin() + 2, 3); // insert 3 at position 2
これは良いです。しかし、あなたのリストは常にソートされていなければならず、ソートされたままになるように新しい要素を挿入する必要があります。もしそうなら、あなたはより良いstd::multiset
を使用します。ここでは
std::multiset<int> v;
... // add elements 1, 2, 4, 5, 6 to it
v.insert(3); // insert 3
、あなたはどこに新しい要素を挿入するために指示する必要がありません。
- 1. PHPシフト配列要素は
- 2. 配列要素をシフトするアルゴリズム
- 3. 配列要素をシフトする方法
- 4. 配列内の要素を右にシフト
- 5. 配列要素の追加
- 6. 配列に要素を追加して要素を印刷する
- 7. 配列の最後の要素に要素を追加する
- 8. 配列に要素を追加して削除する
- 9. ノックアウトjs、配列に追加の要素を追加する
- 10. 既存の各配列要素間に配列要素を追加する
- 11. 配列内の要素をシフト
- 12. Scala:配列内の要素をシフト
- 13. 配列結合配列に要素を追加する
- 14. MongoDBの配列のサブ配列に要素を追加する
- 15. 既存のjavascript配列に配列要素を追加する
- 16. 配列の要素を別の配列に追加する
- 17. HTML要素の配列をループして配列に追加する
- 18. 配列要素からシフトされた要素を返すjs
- 19. CUDA配列要素のシフト操作
- 20. 配列内のオブジェクトに新しい要素を追加する
- 21. laravel 5.4新しい要素をベースコントローラ配列に追加する
- 22. 新しい要素を配列に追加する
- 23. 要素を追加して配列を減らす
- 24. 配列内の要素を右にシフトする1
- 25. char要素の配列を左にシフトする方法
- 26. 文字列配列リストに要素を追加する
- 27. Javaの配列に要素を動的に追加します
- 28. Powershellは動的に要素を配列に追加します
- 29. 配列の要素へのナンシー追加
- 30. 既存の要素をDynamoDBの配列に追加します。
配列の長さを増やすことはできません。 – user31264