logo

ユーザー定義サイズの C++ の 2D ベクトル

2D ベクトルとは、 ベクター ベクトルの。 2D 配列と同様に、2D ベクトルを宣言して値を割り当てることができます。

C++ の法線ベクトルに精通していると仮定して、以下の例を使用して 2D ベクトルが法線ベクトルとどのように異なるかを示します。



C++






/*> C++ program to demonstrate a 2D vector where> each of its elements is of different size.> */> #include> #include> using> namespace> std;> int> main()> {> >/*> >We initialize a 2D vector> >named 'vect' on line 16 with> >different number of values> >in each element.> >*/> > >vectorint>> vect { /* 要素 1 には 2 つの値が含まれます。 */ {1, 2}, /* 3 つの値を含む要素 2。 */ {4, 5, 6}, /* 4 つの値を含む要素 3。 */ {7, 8, 9, 10} }; /* 次に、単純なネストされた for ループを使用して、定義したばかりのベクトルを出力します。 */ for (int i = 0; i { for (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }>



>

>

2D ベクトルでは、すべての要素がベクトルです。

時間計算量: ○(1)

補助スペース: ○(1)

C++




/*> C++ program to create a 2D vector where> every row has a certain number of values> as defined by the user.(On line 13)> */> > #include> #include> using> namespace> std;> int> main()> {> > >/* Here we tell how many rows> >the 2D vector is going to have. */> >int> row = 5;> > >/* We define the number of values> >each row is supposed to have. */> >int> column[] = {5, 3, 4, 2, 1};> > >/*> >We now create a vector of vector with size> >equal to row.> >*/> > >vectorint>> vec(行); /* 21 行目で 2D ベクトルを作成し、それに 'row' (この場合は 5) 単位の容量を割り当てました。 */ /* ここで、ネストされた for ループを通じて行と列の値を代入することにより、2D ベクトルの構造の作成に進みます。 */ for(int i = 0; i { /* 列のサイズを宣言します。 */ int col = column[i]; /* 43 行目で、i 番目の行を列のサイズに宣言します。容量 'col' の法線ベクトルを作成し、for ループの反復ごとに各行内の値を定義します */ vec[i] = Vector。 (列); for(int j = 0; j { vec[i][j] = j + 1; } } /* 最後に、単純なネストされた for ループを使用して、上で作成した 2D ベクトルを出力します。 */ for(int i = 0; i { for (int j = 0; j { cout<< vec[i][j] << ' '; } cout << endl; } return 0; }>

>

>

出力

1 2 3 4 5 6 7 8 9>

時間計算量: O(N*N)

補助スペース: O(N*N)

ベクトル要素にアクセスする別のアプローチ:

C++




<>div> id=>'highlighter_223295'> class>=>'syntaxhighlighter nogutter '>>'0'>>
class='comments'>/* 内部に要素 (ベクトル) を含む 2D ベクトルを示す C++ コード。 */div>
class='プリプロセッサ'>#include div>
class='プリプロセッサ'>#include div>
クラス='キーワードボールド'>使用>名前空間>std;ディビジョン>
class='未定義のスペース'> div>
class='color1 ボールド'>int>main() div>
class='plain'>{ div>
class='未定義スペース'>>/* 以下では、12 行目で 'vect' という名前の 2D ベクトルを初期化し、次に 14、15、16 行目でそれぞれ値を宣言します。 */div>
class='未定義のスペース'> div>
class='未定義のスペース'>>vectorclass='color1 ボールド'>intclass='plain'>>> vect div>
class='未定義のスペース'>>{ div>
class='未定義のスペース'>>{1, 2, 3}, div>
class='未定義のスペース'>>{4, 5, 6}, div>
class='未定義のスペース'>>{7, 8, 9} div>
class='未定義のスペース'>>};ディビジョン>
class='未定義のスペース'> div>
class='未定義のスペース'>>/* 次に、反復子の助けを借りて単純なネストされた for ループを使用して、14、15、16 行目で宣言した値を出力します。 */div>
class='未定義のスペース'> div>
class='未定義スペース'>>/* Vector vect この宣言は 2 つの部分に分けることができ、以下の概念を理解するのに役立ちます。 1. vect は、vector 型の複数の要素で構成される 2D ベクトルです。 2.vector は複数の int データから構成される 1D ベクトルです。 したがって、for ループで使用される i,j 変数の代わりに、STL によって提供されるイテレータを使用できます。これにより、i、j 操作 (i++、j++) に関して発生する可能性のあるエラーを減らすことができます。 以下のコードでは、反復子を使用してベクトル要素にアクセスしています。 1. 2D ベクトル vect からベクトル型の vect1D ベクトルを取得しています。 2. ベクトル vect 1D ベクトルから x に int 要素を取得しています。 */div>
class='未定義のスペース'> div>
class='未定義のスペース'>>for>(vectorintclass='plain'>> vect1D : vect) div>
class='未定義のスペース'>>{ div>
class='未定義のスペース'>>for>(class='color1 ボールド'>int>x : vect1D) div>
class='未定義のスペース'>>{ div>
class='未定義のスペース'>>cout<< x <<>' 'class='plain'>;ディビジョン>
class='未定義のスペース'>>} div>
class='未定義のスペース'>>cout<< endl; div>
class='未定義のスペース'>>} div>
class='未定義のスペース'> div>
class='未定義のスペース'>>return>0;ディビジョン>
class='plain'>} div>div>div>>>

>

>

出力

1 2 3 4 5 6 7 8 9>

時間計算量: O(N*N)

補助スペース: O(N*N)

Java のギザギザ配列と同様に、2D ベクトルの各要素には異なる数の値を含めることができます。

C++




/*> C++ program to demonstrate a 2D vector where> each of its elements is of different size.> */> #include> #include> using> namespace> std;> int> main()> {> >/*> >We initialize a 2D vector> >named 'vect' on line 16 with> >different number of values> >in each element.> >*/> > >vectorint>> vect { /* 要素 1 には 2 つの値が含まれます。 */ {1, 2}, /* 3 つの値を含む要素 2。 */ {4, 5, 6}, /* 4 つの値を含む要素 3。 */ {7, 8, 9, 10} }; /* 次に、単純なネストされた for ループを使用して、定義したばかりのベクトルを出力します。 */ for (int i = 0; i { for (int j = 0; j { cout<< vect[i][j] << ' '; } cout << endl; } return 0; }>

>

>

出力

1 2 4 5 6 7 8 9 10>

演習問題: さまざまなサイズの列を使用して 2D ベクトルを定義します。
例:

Input : Number of rows : 5 Number of columns in rows : 2 3 4 5 1 Output : 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 Input : Number of rows : 3 Number of columns in rows : 3 2 1 Output : 1 2 3 1 2 1>

2D ベクトルは、多くの場合、内部に行と列を含む行列として扱われます。内部では、これらは実際には 2D ベクトルの要素です。
まず行という名前の整数変数を宣言し、次に各行のサイズの値を保持する列という名前の配列を宣言します。

その後、列のサイズに応じて各行のメモリを初期化します。

C++




// CPP program> #include> #include> using> namespace> std;> int> main()> {> >int> n = 4;> >int> m = 5;> > >/*> >Create a vector containing 'n'> >vectors each of size 'm'.> >*/> >vectorint>> vec( n , ベクトル (m)); for(int i = 0; i { for(int j = 0; j { vec[i][j] = j + i + 1; } } for(int i = 0; i { for(int j = 0; j { コウト<< vec[i][j] << ' '; } cout << endl; } return 0; }>

マドゥリ氏は言った。
>

>

出力

1 2 3 4 5 1 2 3 1 2 3 4 1 2 1>

別のアプローチ
次の 2D ベクトルを初期化したいとします。 n 行と メートル 値 0 の列。

C++




>

>

出力

0 0 0 0 0 0 0 0 0 0 0 0>

時間計算量: O(N*M)

補助スペース: O(N*M)

さらに別のアプローチ:
次の 2D ベクトルを作成するとします。 n 行と メートル 列と入力値。

C++




// CPP program> #include> #include> using> namespace> std;> int> main()> {> >int> n = 4;> >int> m = 5;> > >/*> >Create a vector containing 'n'> >vectors each of size 'm'.> >*/> >vectorint>> vec( n , ベクトル (m)); for(int i = 0; i { for(int j = 0; j { vec[i][j] = j + i + 1; } } for(int i = 0; i { for(int j = 0; j { クート<< vec[i][j] << ' '; } cout << endl; } return 0; }>

>

>

出力

1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8>

時間計算量: O(N*M)

補助スペース: O(N*M)

この記事を読んで 2D ベクトルについてより深く理解し、自信を持って自分でベクトルを適用できるようになることを願っています。