예제가 포함된 C++ 표준 템플릿 라이브러리(STL)의 벡터

C++ 벡터란 무엇입니까?

A C++ 벡터 자동으로 크기를 조정할 수 있는 동적 배열입니다. 크기 조정은 요소가 벡터에 추가되거나 삭제된 후에 발생합니다. 스토리지는 컨테이너에 의해 자동으로 처리됩니다. 벡터의 요소는 연속된 저장소에 저장됩니다. 이를 통해 C++ 프로그래머는 반복자를 사용하여 벡터 요소에 액세스하고 탐색할 수 있습니다.

벡터에 새 데이터를 삽입하는 작업은 벡터 끝에서 수행됩니다. 이 작업에는 차등 시간이 걸립니다. 벡터에서 요소를 제거하는 데는 일정한 시간이 걸립니다. 그 이유는 벡터의 크기를 조정할 필요가 없기 때문입니다. 벡터 시작 부분에 요소를 삽입하거나 삭제하는 데는 선형 시간이 걸립니다.

벡터는 언제 사용하는가?

C++ 벡터는 다음 항목에서 사용해야 합니다.wing 상황:

  • 지속적으로 변화하는 데이터 요소를 다룰 때.
  • 시작하기 전에 데이터 크기를 알 수 없는 경우 벡터에서는 컨테이너의 최대 크기를 설정할 필요가 없습니다.

C++에서 벡터를 초기화하는 방법

벡터의 구문 C + + 입니다

vector <data-type> name (items)
  • 위에 표시된 대로 벡터 키워드로 시작합니다.
  • 데이터 유형은 벡터에 저장될 요소의 데이터 유형입니다.
  • 이름은 벡터 또는 데이터 요소의 이름입니다.
  • 항목은 벡터 데이터의 요소 수를 나타냅니다. 이 매개변수는 선택사항입니다.

반복자

반복자의 목적은 벡터에 저장된 요소에 액세스하도록 돕는 것입니다. 포인터처럼 작동하는 객체입니다. C++ 벡터가 지원하는 일반적인 반복자는 다음과 같습니다.

  • 벡터:: 시작(): 벡터의 첫 번째 요소를 가리키는 반복자를 제공합니다.
  • 벡터:: 끝(): 벡터의 끝이 지난 요소를 가리키는 반복자를 제공합니다.
  • 벡터::cbegin(): 이는 vector::begin()과 동일하지만 요소를 수정하는 기능은 없습니다.
  • 벡터::센드(): 이는 vector::end()와 동일하지만 벡터 요소를 수정할 수는 없습니다.

수정 자

수정자는 지정된 데이터 유형의 의미를 변경하는 데 사용됩니다. C++의 일반적인 수정자는 다음과 같습니다.

  • 벡터::push_back(): 이 수정자는 요소를 뒤에서 밀어냅니다.
  • 벡터::삽입(): 지정된 위치의 벡터에 새 항목을 삽입합니다.
  • 벡터::pop_back(): 이 수정자는 뒤에서 벡터 요소를 제거합니다.
  • 벡터::지우기(): 지정된 위치에서 다양한 요소를 제거하는 데 사용됩니다.
  • 벡터::클리어(): 모든 벡터 요소를 제거합니다.

예제 1

#include <iostream> 
#include <vector> 

using namespace std;
int main()
{
	vector<int> nums;

	for (int a = 1; a <= 5; a++)

		nums.push_back(a);

	cout << "Output from begin and end: ";

	for (auto a = nums.begin(); a != nums.end(); ++a)

		cout << *a << " ";

	cout << "\nOutput from cbegin and cend: ";

	for (auto a = nums.cbegin(); a != nums.cend(); ++a)

		cout << *a << " ";

	return 0;
}

출력:

수정 자

다음은 코드의 스크린샷입니다.

수정 자

코드 설명 :

  1. 코드에 iostream 헤더 파일을 포함합니다. 이를 통해 콘솔에서 읽고 쓸 수 있습니다.
  2. 코드에 벡터 헤더 파일을 포함합니다. 이를 통해 C++에서 벡터 작업을 수행할 수 있습니다.
  3. 클래스와 함수를 호출하지 않고 사용할 수 있도록 std 네임스페이스를 포함합니다.
  4. 프로그램의 로직을 추가해야 하는 main() 함수를 호출합니다.
  5. {는 main() 함수 본문의 시작을 표시합니다.
  6. 정수 집합을 저장하려면 nums라는 벡터를 선언하세요.
  7. 벡터를 반복하는 데 도움이 되는 for 루프를 만듭니다. 변수는 1부터 벡터 요소를 반복하는 데 도움이 됩니다.st 5로th 집단.
  8. 뒤에서 벡터 num에 요소를 밀어 넣습니다. 각 반복마다 변수 a의 현재 값을 벡터(1~5)에 추가합니다.
  9. 콘솔에 일부 텍스트를 인쇄합니다.
  10. 반복자 변수 a를 사용하여 벡터 숫자의 요소를 처음부터 마지막 ​​요소까지 반복합니다. 벡터::begin() 및 벡터::end() 반복자를 사용하고 있음을 참고하세요.
  11. 각 반복마다 콘솔에서 반복자 변수 an이 가리키는 값을 인쇄합니다.
  12. 콘솔에 일부 텍스트를 인쇄합니다. \n은 새 줄 문자로, 거기에서 인쇄할 새 줄로 커서를 이동합니다.
  13. 반복자 변수를 사용하여 처음부터 마지막 ​​요소까지 벡터 숫자의 요소를 반복합니다. 벡터::cbegin() 및 vector::cend() 반복자를 사용하고 있음을 참고하세요.
  14. 각 반복마다 콘솔에서 반복자 변수 a가 가리키는 값을 인쇄합니다.
  15. 프로그램이 성공적으로 실행되면 main 함수는 값을 반환해야 합니다.
  16. main() 함수 본문의 끝입니다.

예제 2

#include <iostream>
#include <vector> 

using namespace std;
int main()
{
	vector<int> nums;
	
	nums.assign(5, 1);

	cout << "Vector contents: ";
	for (int a = 0; a < nums.size(); a++)
		cout << nums[a] << " ";

	nums.push_back(2);
	int n = nums.size();
	cout << "\nLast element: " << nums[n - 1];

	nums.pop_back();

	cout << "\nVector contents: ";
	for (int a = 0; a < nums.size(); a++)
		cout << nums[a] << " ";

	nums.insert(nums.begin(), 7);

	cout << "\nFirst element: " << nums[0];
	
	nums.clear();
	cout << "\nSize after clear(): " << nums.size();			
}

출력:

수정 자

다음은 코드의 스크린샷입니다.

수정 자

코드 설명 :

  1. 해당 기능을 사용하려면 코드에 iostream 헤더 파일을 포함하세요.
  2. 벡터 헤더 파일을 사용하려면 코드에 벡터 헤더 파일을 포함하세요. 기능.
  3. 클래스를 호출하지 않고 사용하려면 std 네임스페이스를 포함하세요.
  4. main() 함수를 호출합니다. 프로그램 로직은 프로그램 본체 내부에 추가되어야 합니다.
  5. main() 함수 본문의 시작입니다.
  6. 일부 정수 값을 저장하려면 nums라는 벡터를 선언하세요.
  7. 벡터 숫자에 5개의 요소를 저장합니다. 각각의 값은 1입니다.
  8. 콘솔에 일부 텍스트를 인쇄합니다.
  9. 반복자 변수 a를 사용하여 벡터 숫자의 요소를 반복합니다.
  10. 각 반복마다 콘솔에 벡터 숫자 값을 인쇄합니다.
  11. 벡터 num의 끝에 값 2를 추가합니다.
  12. 벡터 num의 크기를 저장하기 위해 정수 변수 n을 선언합니다.
  13. 다른 텍스트와 함께 벡터 숫자의 마지막 값을 인쇄합니다. 2를 반환해야 합니다.
  14. 벡터 숫자에서 마지막 요소를 제거합니다. 2개는 삭제됩니다.
  15. 콘솔에 텍스트를 인쇄합니다. \n은 커서를 새 줄로 이동하여 거기에 있는 텍스트를 인쇄합니다.
  16. 반복자 변수 a를 사용하여 벡터 숫자의 요소를 반복합니다.
  17. 각 반복마다 콘솔에 벡터 숫자 값을 인쇄합니다.
  18. 벡터 num의 시작 부분에 값 7을 삽입합니다.
  19. 다른 텍스트와 함께 벡터 숫자의 첫 번째 값을 인쇄합니다. 7을 반환해야 합니다.
  20. 벡터 숫자에서 모든 요소를 ​​삭제합니다.
  21. 모든 내용을 지운 후 다른 텍스트와 함께 벡터 num의 크기를 인쇄합니다. 0을 반환해야 합니다.
  22. main() 함수 본문의 끝입니다.

생산 능력

팔로우를 활용하세요wing 벡터의 용량을 결정하는 함수:

  • 크기() –벡터의 항목 수를 반환합니다.
  • 최대_크기() - 벡터가 저장할 수 있는 최대 항목 수를 반환합니다.
  • 용량() –그것 벡터에 할당된 저장 공간의 양을 반환합니다.
  • 크기 조정 () –그것 n개의 항목을 포함하도록 컨테이너의 크기를 조정합니다. 벡터의 현재 크기가 n보다 크면 이전 항목이 벡터에서 제거됩니다. 벡터의 현재 크기가 n보다 작은 경우 추가 항목이 벡터 뒷면에 추가됩니다.
  • 비어있음() -it는 벡터가 비어 있으면 true를 반환합니다. 그렇지 않으면 false를 반환합니다.

예제 3

#include <iostream> 
#include <vector> 
using namespace std;
int main() {
	vector<int> vector1;
	for (int x = 1; x <= 10; x++)
		vector1.push_back(x);
	cout << "Vector size: " << vector1.size()<< endl;
	cout << "Vector capacity: " << vector1.capacity() << endl;
	cout << "Maximum size of vector: " << vector1.max_size()<< endl;
	vector1.resize(5);
	cout << "Vector size after resizing: " << vector1.size() << endl;
	if (vector1.empty() == false)
		cout << "Vector is not empty"<<endl;
	else
		cout << "Vector is empty"<<endl;
	return 0;
}

출력:

생산 능력

다음은 코드의 스크린샷입니다.

생산 능력

코드 설명 :

  1. 해당 기능을 사용하려면 코드에 iostream 헤더 파일을 포함하세요.
  2. 해당 기능을 사용하려면 코드에 벡터 헤더 파일을 포함하세요.
  3. 클래스를 호출하지 않고 사용하려면 코드에 std 네임스페이스를 포함하세요.
  4. main() 함수를 호출합니다. 프로그램 로직은 이 함수의 본문 내에 추가되어야 합니다.
  5. 정수를 저장할 vector1이라는 벡터를 만듭니다.
  6. for 루프를 사용하여 1부터 10까지의 값을 갖는 변수 x를 만듭니다.
  7. 변수 x의 값을 벡터에 푸시합니다.
  8. 콘솔의 다른 텍스트와 함께 벡터의 크기를 인쇄합니다.
  9. 콘솔의 다른 텍스트와 함께 벡터의 용량을 인쇄합니다.
  10. 벡터가 콘솔의 다른 텍스트와 함께 보유할 수 있는 최대 항목 수를 인쇄합니다.
  11. 5개의 요소만 포함하도록 벡터의 크기를 조정합니다.
  12. 다른 텍스트와 함께 벡터의 새 크기를 인쇄합니다.
  13. 벡터가 비어 있지 않은지 확인하세요.
  14. 벡터가 비어 있지 않으면 콘솔에 텍스트를 인쇄합니다.
  15. else 문을 사용하여 벡터가 비어 있는 경우 수행할 작업을 지정합니다.
  16. 벡터가 비어 있는 경우 콘솔에 인쇄할 텍스트입니다.
  17. 프로그램은 성공적으로 완료되면 값을 반환해야 합니다.
  18. main() 함수 본문의 끝입니다.

요약

  • C++ 벡터는 요소가 추가되거나 삭제될 때 자동으로 크기를 조정할 수 있는 동적 배열입니다.
  • 벡터에 대한 저장은 컨테이너에 의해 자동으로 처리됩니다.
  • 벡터의 요소는 반복자를 사용하여 액세스한 다음 탐색하기 위해 연속 저장소에 저장됩니다.
  • 벡터에 새 데이터를 삽입하는 작업은 벡터의 끝에서 수행됩니다.
  • 벡터에 데이터를 삽입하는 데는 차등 시간이 걸립니다.
  • 벡터에서 요소를 제거하는 데는 일정한 시간이 걸립니다.
  • 처음에 요소를 삽입하거나 삭제하는 데는 선형 시간이 걸립니다.
  • 지속적으로 변경되는 데이터 요소를 처리할 때는 벡터를 사용해야 합니다.
  • 또한 시작하기 전에 데이터 크기를 알 수 없는 경우 벡터를 사용할 수 있습니다.