質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

2052閲覧

配列に格納されているデータを更新していくには

GOTOken

総合スコア54

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/08/11 07:54

希望の動き

データが入るたびに一番古いデータを削除し、最新のデータを格納し、古いもの左へ最新のものは右に。というイメージです。
自分で考えた方法

データの格納個数を仮に3個とする場合は

c#

1GameObject[3] 変数名;//Unity内でデータを入れる

このようにしてやると思うのですが、希望の動きを実現する際の記述の仕方がいまいちわかりませんでした。

調べたところ、リストに変換し、RemoveAt(0)このようにして、一番古いデータを削除するようなイメージを掴む事ができました。ですが、横にずらす??というような動きのさせ方がわからなかったので、そこのご教授をしていただけると嬉しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

比較的よくある考え方(先入れ先出し、FIFO)のため、言語によってはすでに相当するものが用意されていたりします。

C#では組み込みのコレクションのQueueが意図するものに近いでしょう(大きさは固定ではありませんが)
他にもよくあるパターンは用意されているため、以下の一覧に目を通してみても良いかもしれません。

コレクション (C# および Visual Basic)

また、自分で実装する場合は、「リングバッファ」の考え方も参考になると思います。

投稿2018/08/11 08:10

imihito

総合スコア2166

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

System.Collections.Generic.Queue を使った例:

C#

1using System; 2using System.Collections.Generic; 3 4class BoundedQueue<T> { 5 private Queue<T> body_ = new Queue<T>(); 6 private int size_; // 要素数の上限 7 public BoundedQueue(int size) { size_ = size; } 8 public void Enque(T data) { 9 // 末尾に挿入ののち、size_を越えないように先頭から削除する 10 body_.Enqueue(data); 11 while ( body_.Count > size_ ) body_.Dequeue(); 12 } 13 public void print() { 14 foreach ( T item in body_) Console.Write("{0} ", item); 15 Console.WriteLine(); 16 } 17} 18 19/* おためし */ 20public class Program { 21 public static void Main() { 22 BoundedQueue<int> bq = new BoundedQueue<int>(3); 23 for ( int i = 0; i < 10; ++i ) { 24 bq.Enque(i); 25 bq.print(); 26 } 27 } 28} 29 30/* 実行結果 310 320 1 330 1 2 341 2 3 352 3 4 363 4 5 374 5 6 385 6 7 396 7 8 407 8 9 41*/

投稿2018/08/11 19:43

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

呼び出すと RemoveAt 削除された項目を置換するアイテムを削除するには、一覧の残りの項目が付け直されます。 たとえば、インデックス 3 のアイテムを削除する場合は、インデックス 4 にある項目が 3 の位置に移動されます。 さらに、リスト内の項目の数 (で表される、 Count プロパティ) が 1 ずつ減少します。

引用元

ということなので、RemoveAt(0)で削除した場合、残りのデータは自動的に詰められます。

投稿2018/08/11 08:08

fiveHundred

総合スコア9797

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GOTOken

2018/08/11 08:19

なるほど!ありがとうございます! 実際に試してみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問