<Vector 함수>
- c++의 STL (standard template library)에 존재하는 vector함수는 c언어의 동적할당과 비슷한 개념이다.
- c언어처럼 사용자가 직접 동적할당을 해주며 사용할 필요없이 vector는 알아서 할당된다.
- Vector 선언
#include <vector>
- Vector assign (vector 할당)
vector<int> v; //비어있는 vector 생성
vector<int> v(n); //0으로 초기화되는 n개의 원소를 가지는 vector 생성
vector<int> v(n,m); //m으로 초기화되는 n개의 원소를 가지는 vector 생성
vector<int> v2(v1); //v1을 복사하여 v2를 생성
- Vector Element (vector 요소 추가, 삭제)
- v.push_back(i) : vector 제일 뒤에 i 추가
- v.pop_back() : vector 제일 뒤 요소 삭제
vector<int> v;
v.push_back(1); //1
v.push_back(2); //1 2
v.pop_back(); //1
- Vector access (vector 접근)
- v.at(n) : 범위를 점검하며 n번째 요소를 참조
- v[n] : 범위를 점검하지 않으며 n번째 요소를 참조
- v.front() : 첫번째 요소를 참조
- v.back() : 마지막 요소를 참조
vector<int> v;
for (int i = 0; i < 28; i++) {
v.push_back(i + 1);
}
cout << v.at(17) << endl; //18
cout << v[15] << endl; //16
cout << v.front() << endl; //1
cout << v.back() << endl; //28
- Vector Iterator (vector 반복자)
- v.begin() : vector의 첫번째 주소값 반환
- v.end() : vector의 마지막+1 주소값 반환
vector<int> v;
vector<int>::iterator iter;
for (int i = 0; i < 28; i++) {
v.push_back(i + 1);
}
for (iter = v.begin(); iter < v.end(); iter++) {
cout << *iter << endl;
}
//1~28 까지 출력
- Vector capacity (vector 용량)
- v.empty() : vector가 비어있는지 판단해서 bool로 반환
- v.size() : vector에 들어가 있는 인자의 길이(개수)를 파악
- v.capacity() : vector에 할당된 총 용량의 길이를 파악
- v.resize() : vector의 인자의 길이를 재조정
# capacity가 resize후의 용량보다 작았을경우 capacity도 resize만큼 용량 조정
# size의 크기가 resize후의 크기보다 클 경우 index 참조 에러 발생
vector<int> v;
cout << v.empty(); //1
for (int i = 0; i < 28; i++) {
v.push_back(i + 1);
cout << v[i] << " " << v.size() << " " << v.capacity() << endl;
}
v.resize(29);
cout << v.size() << " " << v.capacity() << endl;
cout << v.empty(); //0
- Vector function (vector 함수)
- v.clear() : vector 비워주기 (size만 줄어들고 capacity는 그대로)
- v1.swap(v2) : vector1과 vector2를 교환 (size와 capacity 모두 교환)
- v.insert(iter,m) : iterator위치에 m을 삽입 (나머지는 뒤로 밀림)
- v.insert(iter,n,m) : iterator위치부터 m을 n개 삽입 (나머지는 뒤로 밀림)
- v.erase(iter) : iterator위치의 원소를 삭제 (size는 줄어듬, capacity는 그대로)
- v.eraser(iter1,tier2) : iterator1 부터 iterator2까지 원소를 삭제 (size는 줄어듬, capacity는 그대로)
vector<int> v;
cout << v.size() << v.capacity() << endl; //0 0
for (int i = 0; i < 28; i++) {
v.push_back(i + 1);
}
v.insert(v.begin(), 3, 4); // 4 4 4 1 2 3 4 ~
v.insert(v.begin(), 4); // 4 4 4 4 1 2 3 ~
v.erase(v.begin()); // 4 4 4 1 2 3 4 ~
v.erase(v.being(), v.begin()+3); // 1 2 3 4 ~
v.erase(v.begin(), v.end()); // 전체 삭제
cout << v.size() << v.capacity() << endl; //0 42
'Dev > C++' 카테고리의 다른 글
Map 함수정리 C++ (0) | 2021.04.07 |
---|---|
String 함수정리 C++ (0) | 2020.11.05 |
댓글