** C++ STL (Standard Template Library) - vector (가변길이의 배열)
*** 풀 때 : 값 비교할때 (메인 값을 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 ?