벡터(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 |