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

⚡ 스마트 요약

벡터 입력 C++ `Dynamic`은 표준 템플릿 라이브러리(STL)에서 제공하는 동적 배열로, 요소가 추가되거나 제거될 때 자동으로 크기가 조정되며, 프로그래머가 반복자를 사용하여 요소에 접근하고 순회할 수 있도록 연속적인 메모리 공간에 항목을 저장합니다.

  • 📦 동적 배열: A C++ 벡터는 고정 크기 정적 배열과 달리 자동으로 크기가 커지거나 줄어듭니다.
  • 🧩 헤더 및 구문: 벡터 헤더 파일을 포함시킨 다음 벡터를 선언하세요. 타입이 지정된 요소를 저장할 이름입니다.
  • 🧭 반복자: begin(), end(), cbegin(), 및 cend() 함수는 포인터처럼 벡터 요소를 이동합니다.
  • 🛠️ 수정자: push_back(), insert(), pop_back(), erase(), clear() 함수는 벡터의 내용을 변경합니다.
  • 📐 생산 능력: size(), capacity(), max_size(), resize(), and empty() 함수는 저장 용량을 보고하거나 조정합니다.
  • 🤖 AI 지원: GitHub Copilot 및 유사한 AI 도우미는 짧은 댓글에서 벡터 연산을 생성합니다.

C++ 벡터 STL

무엇이 C++ 벡터?

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

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

벡터를 사용하여 코드를 작성하기 전에, 언제 벡터가 적절한 컨테이너인지 아는 것이 도움이 됩니다.

벡터는 언제 사용하는가?

A C++ 벡터는 다음과 같은 상황에서 사용해야 합니다.

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

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

벡터의 구문 C++ 입니다

vector <data-type> name (items)

위에 표시된 대로 벡터 키워드로 시작합니다.

  • The 데이터 형식 벡터에 저장될 요소의 데이터 유형입니다.
  • The name 는 벡터 또는 데이터 요소의 이름입니다.
  • The 항목 벡터 데이터의 요소 개수를 나타냅니다. 이 매개변수는 선택 사항입니다.

일단 벡터가 생성되면, 이터레이터를 사용하면 포인터와 유사한 방식으로 벡터의 요소들을 이동할 수 있습니다.

반복자

이터레이터는 벡터에 저장된 요소에 접근하는 데 도움을 주기 위해 사용됩니다. 이터레이터는 포인터처럼 작동하는 객체입니다. 다음은 Vector에서 지원하는 일반적인 이터레이터입니다. C++ 벡터:

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

다음 예제는 벡터에 데이터를 채운 다음, 가변 반복자와 상수 반복자를 모두 사용하여 벡터를 순회합니다.

예제 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;
}

출력:

C++ 벡터 반복자 예제 1 출력

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

C++ 벡터 반복자 예제 1 코드

Code 설명 :

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

수정 자

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

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

다음 예제에서는 이러한 수정자를 순서대로 적용하여 벡터가 어떻게 변하는지 살펴봅니다.

예제 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();			
}

출력:

C++ 벡터 수정자 예제 2 출력

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

C++ 벡터 수정자 예제 2 코드

Code 설명 :

  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() 함수 본문의 끝입니다.

생산 능력

다음을 사용하십시오. 기능 벡터의 용량을 결정하기 위해:

  • 크기() 벡터에 있는 항목의 개수를 반환합니다.
  • 최대_크기() – 벡터가 저장할 수 있는 최대 항목 수를 반환합니다.
  • 용량() – 벡터에 할당된 저장 공간의 양을 반환합니다.
  • 크기 조정() - 컨테이너의 크기를 n개의 항목을 담을 수 있도록 조정합니다. 벡터의 현재 크기가 n보다 크면 뒤쪽 항목이 제거됩니다. 벡터의 현재 크기가 n보다 작으면 추가 항목이 벡터의 뒤쪽에 추가됩니다.
  • 비어 있는() 벡터가 비어 있으면 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;
}

출력:

C++ 벡터 용량 예제 3 출력

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

C++ 벡터 용량 예제 3 코드

Code 설명 :

  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() 함수 본문의 끝입니다.

자주 묻는 질문

벡터는 크기가 자동으로 조정되고 자체 크기를 알고 있는 동적 배열인 반면, 내장 배열은 컴파일 시점에 길이가 고정됩니다. 벡터는 메모리를 자동으로 관리하지만, 일반 배열은 그렇지 않습니다.

빠른 직접 접근을 위해서는 nums[0]과 같은 첨자 연산자를 사용하세요. nums.at(0)과 같은 at() 멤버 함수는 동일한 기능을 수행하지만 인덱스가 유효하지 않을 경우 out_of_range 예외를 발생시켜 더 안전합니다.

요소들이 모두 벡터인 벡터를 선언하세요. 예를 들어 `vector<vector<int>`처럼요. 그리드입니다. 생성자 또는 push_back 행을 사용하여 크기를 조정할 수 있습니다. 각 내부 벡터는 독립적으로 확장될 수 있으므로 유연하고 크기 조절이 가능한 행렬을 제공합니다.

벡터는 요소들을 연속적인 메모리 공간에 저장하여 빠른 임의 접근이 가능하며, std::list는 이중 연결 리스트로, 어디에서든 빠른 삽입 및 삭제가 가능하지만 직접적인 인덱싱은 지원하지 않습니다. 접근 패턴에 따라 적절한 방식을 선택하세요.

알고리즘 헤더를 포함하고 시작 및 끝 반복자를 사용하여 std::sort를 호출합니다. 예: sort(nums.begin(), nums.end()). 기본적으로 오름차순으로 정렬됩니다. 사용자 지정 비교 연산자를 전달하거나 그 이상의 값을 사용할 수 있습니다. () 내림차순으로 정렬합니다.

네. 벡터는 템플릿이며 문자열, 사용자 정의 클래스, 심지어 다른 벡터를 포함하여 모든 유형을 담을 수 있습니다. 꺾쇠괄호(<>) 안에 요소 유형을 선언하세요. 예를 들어 `vector`처럼요. 또는 벡터 .

네. AI 코딩 도우미는 간단한 프롬프트나 주석을 입력하면 선언, 푸시백 루프, 반복문 등을 포함한 작동 가능한 벡터 코드로 변환해 줍니다. 하지만 AI가 프로젝트별 요구 사항을 놓칠 수 있으므로, 제안된 데이터 유형, 범위, 용량 처리 방식을 항상 검토하세요.

예. GitHub 부조종사 이 프로그램은 입력하는 동안 벡터 선언, push_back 및 insert 호출, 반복자 루프를 제안합니다. 반복적인 상용구 코드를 잘 처리하지만, 컴파일하기 전에 인덱스, 크기 조정 및 로직을 검증해야 합니다.

이 게시물을 요약하면 다음과 같습니다.