갓비니

** C++ STL (Standard Template Library) - vector (가변길이의 배열) 본문

Programming/C++

** C++ STL (Standard Template Library) - vector (가변길이의 배열)

갓비니 2020. 7. 3. 23:59

*** 풀 때 :  값 비교할때 (메인 값을 temp에 넣어놓고 for문으로 비교하기!)

횟수 셀 때는 count 이용하고, 

모든 조건을 잘 사용해야 함을 숙지하기 (문자열의 최대 길이 등이 왜 주어졌을까? -> 범위를 지정하기 위해서!)

 

가변길이의 배열을 원할 때 사용할 수 있다.

vector는 기특하게 배열공간이 부족하면 스스로 더 큰 배열을 할당받아서 공간을 늘린다.

 

1) vector 객체 생성

vector<자료형> v;

만일 vector<int> v; 였는데 다른 타입의 값을 넣으면 오류가 발생한다!

 

2) vector 내 원소 삽입 / 삭제

v.push_back(20); //삽입

삭제의 경우는 iterator와 함께 사용해야한다!

#include<algorithm>  사용하면 그냥 사용가능

 

vector<int>::iterator it;

it = v.begin(); //v의 첫번째 원소

it = v.erase(it); // 첫번째 원소를 지워주세요!

erase(it)은 it이 가리켰던 원소를 삭제한 후, 뒤에 있는 친구들을 한칸씩 땡겨온다.

삭제된 친구의 다음 원소를 가리키는 포인터를 리턴한다.

그러므로 삭제 후에도 또 새롭게 다시 새로운 v.begin()이 it이 된다!

 

 

4) vector의 값 읽기 / 변경

at()을 이용하거나 []를 이용한다.

v.at(0) // v의 첫번째 원소에 접근할 수 있음. // v[0]

v.at(2) = 300; //변경 // v[2]=300;

int a = v.at(2); //읽어오기 // int a=v[2]

 

5) vector의 원소 개수 

v.size() // 개수를 알 수 있다. (용량은 v.capacity() )

 

 

6) vector의 멤버 함수와 연산자 함수

push_back(element) // 원소추가

at(int index) // index 위치의 내용 리턴

begin() // 첫번째 원소의 내용 리턴

end() // 마지막 원소 다음 (벡터의 끝) 내용을 리턴

empty() // 벡터가 비어있으면 true 리턴

erase(iterator it) // it이 가리키는 원소 삭제 후 땡겨줌

size() // 벡터가 가지고 있는 원소의 개수 리턴

operator[]() // 지정된 원소에 대한 내용 리턴

operator=() // 이 벡터를 다른 벡터에 복사

find() // 원하는 값의 위치를 반환해준다. 존재하지 않을 경우 매우 큰 값을 반환한다.

 

string_list로 받은 string형 vector의 내용이

{"가나","다라","마바","사아"} 라고 하자.

 

그러면 

void test(vector<string> string_list ){

 

   string_list.at(0); -->"가나"

   string_list.size(); --> 4를 리턴한다.

   string_list.find("사아") --> 3을 리턴한다! 

 

}

 

capacity ?