[C++ STL] Vector

Kim Sung Kyu·2021년 4월 16일
0

C++🚁

목록 보기
2/8
post-thumbnail

Vector

  • 동적 배열 구조
  • 자동으로 배열의 크기 조절과 객체의 추가와 삭제가 가능

1. 생성 및 초기화

종류상세 설명
vector<자료형> 변수명백터 생성
vector<자료형> 변수명(숫자)숫자만큼 백터 생성 후 0으로 초기화
vector<자료형> 변수명 = { 변수1, 변수2, 변수3... }백터 생성 후 오른쪽 변수 값으로 초기화
vector<vector<자료형> 변수명2차원 백터 생성(열과 행 모두 가변)
vector<자료형>변수명.assign(범위, 초기화할 값)백터의 범위 내에서 해당 값으로 초기화

2. Iterators

종류상세 설명
begin()시작 지점의 주소값 반환
end()끝 지점 주소값 반환
rbegin()끝 지점을 시작 지점으로 반환
rend()시작 지점을 끝 지점으로 반환

rbegin(), rend()를 이용한 역순 출력 예시

#include <iostream>
#include <vector>
using namespace std;

void main() 
{
	vector<int> v = {1,2,3,4,5};

	vector<int>::reverse_iterator itr;
	for (itr=v.rbegin(); itr!=v.rend(); itr++) 
	{
		printf("%d\n", *itr); // 5, 4, 3, 2, 1
	}
}

3. 요소 접근

종류상세 설명
at(i)백터의 i번째 요소 접근 (범위 검사함)
v[i]백터의 i번째 요소 접근 (범위 검사 안함)
front()백터의 첫번째 요소 접근
back()백터의 마지막 요소 접근

※ at과 []의 차이점

  • at은 범위를 검사하여 범위 밖의 요소에 접근 시 예외처리를 발생시킴(std::out_of_range)
  • []는 범위검사를 하지 않으며 예외처리 발생시키지 않음

4. 요소 삽입, 삭제

종류상세 설명
push_back()백터의 마지막 부분에 새로운 요소 추가
pop_back()백터의 마지막 부분 제거
insert(삽입할 위치의 주소 값, 변수 값)사용자가 원하는 위치에 요소 삽입
emplace(삽입할 위치의 주소 값, 변수 값)사용자가 원하는 위치에 요소 삽입(복사생성자 X)
emplace_back()백터의 마지막 부분에 새로운 요소 추가(복사생성자 X)
erase(삭제할 위치) / erase(시작위치, 끝위치)사용자가 원하는 index값 위치의 요소를 삭제
clear()백터의 모든 요소를 지움(return size = 0)
resize(수정 값)백터의 사이즈를 조정(범위 초과시 0으로 초기화)
swap(백터 변수)백터와 백터를 스왑

5. 크기(용량) 관리

종류상세 설명
empty()백터가 빈공간이면 true, 값이 있다면 false
size()백터의 크기 반환
capacity()heap에 할당된 백터의 실제크기(최대크기) 반환
max_size()백터가 system에서 만들어 질 수 있는 최대 크기 반환
reserve(숫자)백터의 크기 설정
shrink_to_fit()capacity의 크기를 백터의 실제 크기에 맞춤

size()와 capacity()의 차이점 예시

#include  <iostream>
#include  <vector>
using  namespace  std;


int  main() {
	vector<int> v = { 1, 2, 3, 4, 5};

	v.reserve(10);

	cout <<  v.size() <<  endl; // 5
	cout <<  v.capacity() <<  endl; // 10
}

참고

profile
꿈꾸던 내가 될꺼야😃

0개의 댓글