Programming/C++

C++ STL 벡터(vector) 사용법

몽땅마니아(MDD) 2021. 10. 22. 22:42

벡터(vector)

스택과 비슷한 구조이나 한쪽이 아닌 모든 곳에서 원소값 확인, 삽입, 삭제가 가능하다. 크기가 가변적으로 변하는 배열로 객체들을 순차적으로 보관하는 시퀀스 컨테이너이며 메모리를 효율적을 관리할 수 있다.

(시퀀스 컨테이너 - vector, list, deque)

 

벡터 선언

vector<데이터타입> 벡터명;

vector<데이터타입> 벡터명(원소개수, 초기화할 원소값)   //원소 개수 만큼 해당 원소값을 초기화(원소값을 입력하지 않을 경우 0으로 자동 초기화)

 

벡터 마지막 위치에 원소 삽입

벡터명.push_back(원소);

 

벡터의 맨 앞 원소 반환

벡터명.front();

 

벡터의 맨 뒤 원소 반환

벡터명.back();

 

원하는 인덱스의 원소 반환

벡터명.at(인덱스번호)

벡터명[인덱스번호]    //배열과 접근법 같음

 

벡터가 비어있는지 확인 (비었으면 true, 아니면 false)

벡터명.empty();

 

벡터에서 인덱스를 표현하는 iterator(반복자)

벡터명.begin();  // 벡터 맨 앞 인덱스를 표현

벡터명.end(); // 벡터 맨 뒤 인덱스를 표현

( iterator 표현 - vector<int>::iterator itr = v.begin(); )

 

원하는 위치에 원소 삽입

벡터명.insert(iterator로 표현된 인덱스, 원소);

 

원하는 위치의 원소 삭제

벡터명.erase(iterator로 표현된 인덱스, 원소);

 

벡터의 마지막 원소 삭제

벡터명.pop_back();

 

벡터의 사이즈 반환

벡터명.size();

 

벡터의 capacity반환

벡터명.capacity();

 

벡터 사이즈 변경

벡터명.resize(사이즈);  //기존 사이즈보다 작으면 그 만큼 원소 삭제

 

두 벡터의 원소 값, capacity 모두 스왑(교환)

벡터1.swap(벡터2);

 

벡터 내 모든 원소 삭제

벡터명.clear();

 

#include <iostream>
#include <vector> //벡터를 사용하기 위한 헤더파일

using namespace std;

int main() {
	vector<int> v; //벡터 선언 - vector<데이터타입> 벡터명;
	vector <int> v1(5, 2); // vector<데이터타입> 벡터명(원소개수, 초기화할 원소값) //원소 개수 만큼 해당 원소값을 초기화(원소값을 입력하지 않을 경우 0으로 자동 초기화)
	
	v.push_back(1); v.push_back(3); v.push_back(5); //벡터 마지막 위치에 원소 삽입 - push_back(원소);
	
	cout << v.front() << endl; //벡터의 맨 앞 원소 반환 - front();
	//출력 : 1

	cout << v.back() << endl; // 벡터의 맨 뒤 원소 반환 - back();
	// 출력 : 5

	cout << v.at(1) << endl; // 원하는 인덱스의 원소 반환 - at(인덱스번호);
	// 출력 : 3

	cout << v[1] << endl; //원하는 인덱스의 원소 반환 - 벡터명[인덱스번호]    //배열과 접근법 같음
	//출력 : 3

	cout << v.empty() << endl; // 벡터가 비어있는지 확인 (0,1) -empty();
	// 출력 : 0(false)

	v.insert(v.end(), 2); //원하는 위치에 원소 삽입 - insert(iterator로 표현된 인덱스, 원소);
	cout << v.back() << endl; //마지막 원소가 제대로 삽입됐는지 확인
	//출력 : 2

	v.erase(v.begin() + 1);  //원하는 위치의 원소 삭제 - erase(iterator로 표현된 인덱스, 원소);
	cout << v.at(1) << endl; //1번째 원소였던 3이 제대로 지워졌는지 확인 
	//출력 : 5;

	v.pop_back(); //벡터의 마지막 원소 삭제 - pop_back();
	cout << v.back() << endl; // 마지막 원소가 제대로 삭제됐는지 확인
	//출력 : 5

	cout << v.size() << endl; // 벡터의 사이즈 반환 - size();
	// 출력 : 2

	cout << v.capacity() << endl; //벡터의 capacity반환 - capacity();
	//출력 : 4

	v.resize(1); //벡터 사이즈 변경 - resize(사이즈);  //기존 사이즈보다 작으면 그 만큼 원소 삭제
	cout << v.back() << endl; 
	//출력 : 1

	v.swap(v1); //두 벡터의 원소 값, capacity 모두 스왑(교환) - 벡터1.swap(벡터2);
	cout << v.front() << endl; //벡터가 제대로 교환됐는지 확인
	//출력 : 2

	v.clear(); // 벡터 내 모든 원소 삭제
    
	return 0;
}

 

'Programming > C++' 카테고리의 다른 글

[C++] STL 맵(map) 사용법  (0) 2021.10.23
C++ STL 페어(pair) 사용법  (0) 2021.10.22
C++ STL 덱(deque) 사용법  (0) 2021.10.22
C++ STL 큐(queue) 사용법  (0) 2021.10.22
C++ STL 스택(stack) 사용법  (0) 2021.10.22