벡터 요소가 삽입되거나 삭제될 때 자동으로 크기를 조정하고 해당 저장소가 컨테이너에 의해 자동으로 처리되는 기능을 갖춘 동적 배열과 동일합니다.
empty() 함수는 벡터 컨테이너가 비어 있는지 확인하는 데 사용됩니다.
구문:
vectorname .empty() Parameters : No parameters are passed. Returns : True, if vector is empty False, Otherwise>
예:
Input : myvector = 1, 2, 3, 4, 5 myvector.empty(); Output : False Input : myvector = {} myvector.empty(); Output : True>
시간 복잡도 – 상수 O(1)
오류 및 예외
1. 예외 발생 보장이 없습니다.
2. 매개변수가 전달되면 오류가 표시됩니다.
CPP
// CPP program to illustrate> // Implementation of empty() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >마이벡터{};> > if> (myvector.empty())> > {> > cout <<> 'True'> ;> > }> > else> {> > cout <<> 'False'> ;> > }> > return> 0;> }> |
>
>산출
True>
애플리케이션 :
정수 목록이 주어지면 모든 정수의 합을 구합니다.
자식 리베이스
Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>
연산
1. 벡터가 비어 있는지 확인하고, 그렇지 않은 경우 0으로 초기화된 변수에 back 요소를 추가하고 back 요소를 팝합니다.
2. 벡터가 빌 때까지 이 단계를 반복합니다.
3. 변수의 최종 값을 인쇄합니다.
CPP
// CPP program to illustrate> // Application of empty() function> #include> #include> using> namespace> std;> int> main()> {> > int> sum = 0;> > vector<> int> >마이벡터{ 1, 5, 6, 3, 9, 2 };> > while> (!myvector.empty())> > {> > sum = sum + myvector.back();> > myvector.pop_back();> > }> > cout << sum;> > return> 0;> }> |
>
>산출
26>벡터::크기()
size() 함수는 벡터 컨테이너의 크기 또는 벡터 컨테이너의 요소 수를 반환하는 데 사용됩니다.
구문:
vectorname .size() Parameters : No parameters are passed. Returns : Number of elements in the container.>
예:
Input : myvector = 1, 2, 3, 4, 5 myvector.size(); Output : 5 Input : myvector = {} myvector.size(); Output : 0>
시간 복잡도 – 상수 O(1)
오류 및 예외
1. 예외 발생 보장이 없습니다.
2. 매개변수가 전달되면 오류가 표시됩니다.
CPP
// CPP program to illustrate> // Implementation of size() function> #include> #include> using> namespace> std;> int> main()> {> > vector<> int> >마이벡터{ 1, 2, 3, 4, 5 };> > cout << myvector.size();> > return> 0;> }> |
>
>산출
5>
size()보다 empty()가 선호되는 이유
다음과 같은 몇 가지 사항으로 인해 empty() 함수가 size() 함수보다 선호되는 경우가 많습니다.
- 빈() 함수 비교 연산자를 사용하지 않습니다. 이므로 사용하기가 더 편리합니다.
- 빈() 함수는 일정한 시간에 구현 , 컨테이너 유형에 관계없이 size() 함수의 일부 구현에는 list::size()와 같이 O(n) 시간 복잡도가 필요합니다.
애플리케이션 :
정수 목록이 주어지면 모든 정수의 합을 구합니다.
Input : 1, 5, 6, 3, 9, 2 Output : 26 Explanation - 1+5+6+3+9+2 = 26>
연산
1. 벡터의 크기가 0인지 확인하고, 그렇지 않으면 0으로 초기화된 변수에 back 요소를 추가하고 back 요소를 팝합니다.
2. 벡터의 크기가 0이 될 때까지 이 단계를 반복합니다.
3. 변수의 최종 값을 인쇄합니다.
CPP
// CPP program to illustrate> // Application of size() function> #include> #include> using> namespace> std;> int> main()> {> > int> sum = 0;> > vector<> int> >마이벡터{ 1, 5, 6, 3, 9, 2 };> > while> (myvector.size()>0) {> > sum = sum + myvector.back();> > myvector.pop_back();> > }> > cout << sum;> > return> 0;> }> |
>
>산출
26>
size()를 사용할 때에는 주의가 필요합니다.
예를 들어, 다음 프로그램을 고려해보세요:
C++
#include> using> namespace> std;> int> main()> {> > // Initializing a vector of string type> > vector vec = {> 'Geeks'> ,> 'For'> ,> 'Geeks'> };> > for> (> int> i = 0 ; i <= vec.size() - 1 ; i++)> > cout << vec[i] <<> ' '> ;> > return> 0;> }> |
>
목록.정렬 자바
>산출
Geeks For Geeks>
위 프로그램은 잘 작동하지만 이제 다음 프로그램을 고려해 보겠습니다.
C++
#include> using> namespace> std;> int> main()> {> > // Initializing a vector of string type> > vector vec = {> 'Geeks'> ,> 'For'> ,> 'Geeks'> };> > vec.clear();> > for> (> int> i = 0; i <= vec.size() - 1; i++)> > cout << vec[i] <<> ' '> ;> > cout <<> 'Geeks For Geeks'> ;> > return> 0;> }> |
>
>
산출:
분할 오류 SIGEGV
위 프로그램을 컴파일하면 size()의 반환 유형이 unsigned long int의 별칭인 size_t이기 때문에 Segmentation Fault(SIGSEGV)가 발생합니다.-> unsigned long int var = 0;-> cout
그래서 우리는 위 프로그램에서 i = 0에서 i = 18446744073709551615까지 반복하고 있습니다.
이제 초기화된 컨테이너에서 요소를 삭제하고 일련의 작업 후에 컨테이너가 비어 있게 되고 마지막으로 위의 방법을 사용하여 컨테이너의 내용을 인쇄하는 시나리오를 고려해보세요. 확실히 Segmentation Fault(SIGSEGV)가 발생합니다.
어떻게 고치나요?
Segmentation Fault(SIGSEGV)를 방지하려면 컨테이너.size()를 정수 유형으로 유형 변환하는 것이 좋습니다.
C++
#include> using> namespace> std;> int> main()> {> > // Initializing a vector of string type> > vector vec = {> 'Geeks'> ,> 'For'> ,> 'Geeks'> };> > > // Clearing the vector> > // Now size is equal to 0> > vec.clear();> > > // Typecasting vec.size() to int> > for> (> int> i = 0; i <(> int> )vec.size() - 1; i++)> > cout << vec[i] <<> ' '> ;> > cout <<> 'Geeks For Geeks'> ;> > return> 0;> }> // This code is contributed by Bhuwanesh Nainwal> |
>
>산출
Geeks For Geeks>