본문 바로가기

Programming/C++

[C++ STL : vector] vector 기본 사용법 - 생성, 참조, 원소 추가 및 삭제

 출처 : C++ 공식 레퍼런스

 

00. vector 헤더

#include <vector>

 

01. vector 생성자

호출 형태

설명

 

vector<int> vec;

 

 

빈 벡터 생성

 

 

vector<int> vec(n);

 

 

기본값(0)으로 초기화된 n개의 원소를 할당

 

 

vector<int> vec(n,x);

 

 

x값으로초기화된 n개의 원소를 할당

 

 

vector<int> vec2(vec);

 

 

vec의 복사본을 만들어, vec2를 생성
(복사생성자호출)

 

 

vector<int> vec(b,e);

 

반복자구간 [b,e) 초기화한 후 생성

 

 


 

02. 멤버 함수


호출형태


설명

 

 vec.assign(n,x) 

vec.assign(b,e)

 

vec에 x 값으로 n개의 원소를 할당 

vec를 반복자 구간 [b,e)로 할당


vec.at(i)

 

vec의 i번째 원소를 참조


vec.front() /
vec.back()

vec의 첫 번째 원소 / 마지막 원소  참조

vec.begin() / vec.end()
vec.rbegin() / vec.rend()

 

vec의 맨앞 원소의 / vec의 맨뒤 원소의 반복자 참조
vec의 역 순차열 원소를 가리키는 
반복자 참조


vec.capacity()

 

vec에 할당된 공간의 크기 반환


vec.clear()

 

vec의 모든 원소를 제거

 

vec.empty()

 

vec이 비었는지 True, False로 반환
(비었으면 True, 아니면 False)

 

q=vec.erase(p)

q=vec.erase(b,e)

 

p가 가리키는 / [b,e) 구간 원소 제거

q는 다음 원소


q = vec.insert(p,x)

 

p가 가리키는 위치에 x 값을 삽입 

q는 삽입한 원소의 위치를 가리키는 반복자

 


vec.insert(p,n,x) 

vec.insert(p,b,e)

 

n개의 x 값을 삽입 

반복자 구간 [b,e)의 원소를 삽입


vec.max_size()

 

vec이 담을 수 있는 최대 원소의 개수(메모리의 크기) 


vec.push_back(x)  / vec.pop_back()

 

vec의 끝에 x를 추가 / 제거


vec.reserve(n)

 

n개의 원소를 저장할 공간을 예약

 

vec.resize(n)

vec.resize(n,x)

 

vec의 크기를 n으로 변경하고,

나머지 공간의 값을 x로 채움

 

vec.size()

 

vec의 원소 갯수를 반환


vec.swap(vec2)

 

vec이랑 vec2를 swap (교환)
vec  <----> vec2

 


 

 

03. 그 밖에 참고하면 좋을 사항

3-1 배열로 벡터 할당

- 호출 형태 : vector이름.assign( 배열이름, 배열이름+배열크기);

vector<int> vec;
int myints[] = {1776, 7, 4};

vec.assign(myints, myints + 3);

 

 

3-2 두가지 원소 이상 묶을  : Pair

#include <vector>
#include <utility> 
// <utility> : pair 컨테이너 사용을 위한 헤더파일

vector<pair<int,int>> pv;

pv.push_back(make_pair(1,2));

pair 컨테이너는 사용시 utility 헤더를 선언해야합니다.

또한, pair로 선언한 벡터의 경우 값 추가 시 make_pair(a,b)의 형태로 값을 넣어줘야 합니다.

 

 

 

3-3 함수에 파라미터로 호출 시, 본 vector 값에도 변화를 주는 법

void func(vector<int>& vec)
{
	//함수내용
}

&연산자로 메모리를 참조 해줘야, 본 vector 에도 적용됩니다.

 

 

 

 


다음 시간에는 벡터 컨테이너 사용 시 유용한 함수들에 대한 내용으로 돌아오겠습니다ㅎㅎ

엇 이거 어떻게 하더라?'0' 했던 것들 싹싹 모아올 예정입니다:P

이 게시물이 조금이라도 도움되었다면 공감❤️  부탁드립니다!

이상 깨륵이었습니다 🐸

 

 

참조링크

blockdmask.tistory.com/70

hyeonstorage.tistory.com/324

 


가감없는 피드백 언제나 환영합니다  '▽' /
도움이 되셨다면 댓글과 공감 부탁드려요! ❤️💜