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 { /* 2개의 값이 포함된 요소 1입니다. */ {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번째 행을 열 크기로 선언합니다. for 루프의 모든 반복에서 각 행 내부의 값을 정의하는 용량 'col'의 일반 벡터를 만듭니다. */ vec[i] = 벡터. (안부); for(int j = 0; j { vec[i][j] = j + 1; } } /* 이제 마지막으로 위에서 만든 2D 벡터를 인쇄하기 위해 간단한 중첩 for 루프를 사용합니다. */ 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>
class='굵은 키워드'>using>네임스페이스>std; div>
class='정의되지 않은 공백'> div>
class='color1 굵은 글씨'>int>main() div>
class='plain'>{ div>
class='undefoundspaces'>>/* 아래에서는 12행에서 'vect'라는 2D 벡터를 초기화한 다음 14, 15, 16행에서 각각 값을 선언합니다. */div>
class='정의되지 않은 공백'> div>
class='정의되지 않은 공백'>>벡터class='color1 굵은 글씨'>intclass='plain'>>> vect div>
class='정의되지 않은 공백'>>{ div>
class='정의되지 않은 공백'>>{1, 2, 3}, div>
class='정의되지 않은 공백'>>{4, 5, 6}, div>
class='정의되지 않은 공백'>>{7, 8, 9} div>
class='정의되지 않은 공백'>>}; div>
class='정의되지 않은 공백'> div>
class='undefoundspaces'>>/* 이제 반복자의 도움으로 간단한 중첩 for 루프를 사용하여 14, 15, 16행에서 방금 선언한 값을 인쇄합니다. */div>
class='정의되지 않은 공백'> div>
class='undefoundspaces'>>/* vector vect 이 선언을 두 부분으로 나눌 수 있는데, 이는 아래 개념을 이해하는 데 도움이 됩니다. 1. vect는 벡터 유형의 여러 요소로 구성된 2D 벡터입니다. 2. 벡터는 여러 int 데이터로 구성된 1D 벡터입니다. 따라서 for 루프에서 사용되는 i,j 변수 대신 STL에서 제공하는 반복자를 사용할 수 있습니다. i, j 연산(i++, j++)에서 발생할 수 있는 오류를 줄일 수 있습니다. 아래 코드에서는 반복자를 사용하여 벡터 요소에 액세스합니다. 1. 2D 벡터 vect에서 벡터 유형의 vect1D 벡터를 가져옵니다. 2. 벡터 vect 1D 벡터에서 int 요소를 x로 가져옵니다. */div>
class='정의되지 않은 공백'> div>
class='정의되지 않은 공간'>>for>(벡터intclass='plain'>> vect1D : vect) div>
class='정의되지 않은 공백'>>{ div>
class='정의되지 않은 공백'>>for>(class='color1bold'>int>x : vect1D) div>
class='정의되지 않은 공백'>>{ div>
class='정의되지 않은 공백'>>cout<< x <<>' '클래스='일반'>; div>
class='정의되지 않은 공백'>>} div>
class='정의되지 않은 공백'>>cout<< endl; div>
class='정의되지 않은 공백'>>} div>
class='정의되지 않은 공백'> div>
class='정의되지 않은 공백'>>return>0; div>
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 { /* 2개의 값이 포함된 요소 1입니다. */ {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 벡터의 요소입니다.
먼저 row라는 정수 변수를 선언한 다음 각 행의 크기 값을 보유할 columns라는 배열을 선언합니다.

그런 다음 열 크기만큼 모든 행의 메모리를 초기화합니다.

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, 벡터 (중)); 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 {cout<< 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>

시간 복잡도: 오(N*M)

보조 공간: 오(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, 벡터 (중)); 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 {cout<< 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>

시간 복잡도: 오(N*M)

보조 공간: 오(N*M)

이 글을 통해 2D 벡터에 대해 더 잘 이해하고 이제 스스로 적용할 수 있는 자신감을 가지시기를 바랍니다.