[2022.04.19]案


レイアウトについて説明します.

整列


アレイ(Array)とは、同種のデータを連続的に格納するデータ構造を指す.

宣言


アレイを宣言すると、メモリにスペースが割り当てられ、同種のデータが連続的に格納されます.
int scores[5];	// C Style 배열 선언 예

  • アレイを宣言する場合は、定数式または定数式を使用してサイズを指定し、アレイのサイズは変更されません.

  • アレイを宣言する場合、通常は変数ではなく定数を使用してアレイのサイズを宣言します.

  • 配列をゾーン変数として宣言すると、メモリ内のスタック領域に割り当てられます.割り当てられた配列が大きすぎてスタック領域のサイズを超えている場合は、スタックオーバーフローを強制的に終了します.
  • に近づく


    配列はインデックスを使用して配列内の要素にアクセスします.
    デフォルトでは、インデックス(Index)はゼロから始まるゼロベースの番号を使用します.
  • 開始アドレス(BA,Base Address)は、ストレージアレイ内の0番目の要素のアドレスである.
  • 要素に必要なメモリサイズはsizeof(type)によって得ることができ、int型の場合、1要素に必要なメモリサイズは4 bバイトである.
  • 特長


  • 配列のアクセス時間の複雑さはO(1)であり,インデックスを使用して必要な要素に直接アクセスするためである.

  • 配列にはキャッシュ領域があります.
    キャッシュ領域とは?
    これは、データにアクセスする時間と空間が近いことを意味します.配列内の各要素は互いに隣接しているため、1つの要素にアクセスすると、その近くの要素もキャッシュにインポートされます.したがって,配列には空間的領域性がある.

  • キャッシュ領域性があるため、重複文で配列を使用すると効率的なプログラミングが可能になります.
  • std::array


    配列とは?
    C++の固定サイズコンテナで、Cスタイル配列を置き換え、C++11からサポートを提供します.std::arrayは、要素タイプと配列サイズをパラメータとして使用するクラステンプレートであり、arrayヘッダファイルで定義されます.

    特長


  • Cスタイル配列などのカッコ演算子overloadingを指定します.

  • デプスコピーを行う値付け演算子をサポートします.

  • array::size()は、配列のサイズを正確に決定します.

  • 反復器をサポートします.
  • Cスタイルarrayとstd::array比較

  • Cスタイル配列の平均スコアコードを使用します.
  • #include <iostream>
    
    using namespace std;
    
    int main()
    {
        // C style array example
        
        int scores[5] = {50, 60, 70, 80, 90};
    
        int sz = sizeof(scores) / sizeof(int);
    
        int sum = 0;
        for (int i = 0; i < sz; i++) {
            sum += scores[i];
        }
    
        float mean = (float) sum / sz;
    
        cout << "Mean score: " << mean << endl;
    }
  • std::arrayの平均スコアコードを使用します.
  • #include <iostream>
    #include <array>
    
    using namespace std;
    
    int main()
    {
        // Cpp style array example
    
        array<int, 5> scores = {50, 60, 70, 80, 90};
    
        int sum = 0;
        for (const int& s : scores) {
            sum += s;
        }
    
        float mean = (float) sum / scores.size();
    
        cout << "Mean score : " << mean << endl;
    }

    短所


  • 配列のサイズを明示的に指定する必要があります.

  • スタックメモリは常に使用されるため、ビッグデータの格納には使用できません.

  • 固定サイズのスキーム.
  • 位置決め完了後。


    これは基本的な配列とC++style配列です.

    Reference


    黄宣圭.C++早く来なさい!資料構造やアルゴリズムは初めてでしょう.Programmers.