0

部分的に埋められた配列で、最初の開いた要素にデータを入力し続けることを可能にする for ループはどのように見えるでしょうか? たとえば、配列が最大 50 個の要素を保持するように設定されているが、不明な量の要素が既にいっぱいになっている場合、最初の開いている要素にさらにデータを入力できるようにする for ループはどのように見えるでしょうか?

4

2 に答える 2

0

要素の種類によって異なります。配列がポインターを保持し、割り当てられていないスロットが null に設定されている場合は、null を検索します。配列が整数配列の場合、最初に特殊な値 (-1 など) に初期化してから、-1 を検索する必要があります。または、構造体を使用できます。

struct Element { Element():valid(false){}; bool valid; int val; }

そして、割り当てられた要素に対して有効を true に設定します。次に、無効な要素を検索する必要があります。

for (size_t i = 0; i < n; i++) 
   if (!array[i].valid) { 
      array[i].val = val; 
      array[i].valid = true; 
      break; 
   }
于 2013-08-31T21:16:11.517 に答える
0
  • int ar[50]; という配列があるとします。

  • 次に、次を呼び出して ar に 30 個の要素を追加することにします。

  • int インデックス = 0;
  • ボイド追加(int a){
  • for(int i = 0; i < 30 && i < sizeof(ar)/sizeof(int); i++) {
  • ar[i] = a;
  • インデックス++;
  • }
  • }
  • この関数 ADD には、配列に追加された要素の数を追跡する INDEX 変数があります。この変数は、配列のサイズを表します。
  • 後でいくつかの要素を追加することにした場合、最初にインデックスが 50 の配列サイズと等しいかどうかを確認する必要があります。等しい場合は、配列がいっぱいであり、要素を追加する余地がありません。それ以外の場合はインデックスが 50 未満の場合は、さらに要素を追加できます。これは配列内の最後の要素の位置を表すため、インデックス位置から要素の追加を開始できます。
  • ボイド追加(int a){
  • for(int i = index; i < sizeof(ar)/sizeof(int); i++) {
  • ar[i] = a;
  • インデックス++;
  • }
  • }
  • インデックス変数はクラス変数として宣言し、要素が配列に追加されるたびにインクリメントする必要があります。
于 2013-09-01T06:45:49.977 に答える