Vector란 배열처럼 따로 범위를 지정해주지 않고, 원하는 범위만큼 추가를 해줄 수 있다.
Vector을 사용하기 위해서는 Lib를 추가하여 사용하여야 합니다.
#include <vector>
vector을 사용하기 위해서는 자료형에 맞게 선언을 해줘야합니다.
vector<int> v;
vector<char> v;
vector<string> v;
// 구조체로 vector 선언 가능
Struct Node
{
int a;
char b;
};
vector<Node> v;
vector는 범위를 따로 지정해주지 않아도 되지만, 초기화 해주기 위해서는 범위를 지정해줍니다.
// 범위 100만큼 1로 초기화
vector<int> v(100,1); // 실행 1
// 범위를 10으로 조정하고 값을 2로 초기화
v = vecotr<int>(10,2) // 실행 2
// 범위와 값 모두 초기화
v = vector<int>(); // 실행 3
결과1 | 결과2 | 결과3 |
---|---|---|
// vector의 2차원 표현
vector<vector<int>> v;
push-back 함수
#include <iostream>
#include <vector>
using namespace std;
vector<int> v;
int main() {
// v 벡터에 1 2 3 순서로 입력
v.push_back(1);
v.push_back(2);
v.push_back(3);
for (int i = 0; i < v.size(); i++) {
cout << v[i]<<" ";
}
return 0;
}
결과
v.begin() / v.end()
v.resize()
실행 1
다음 코드는 범위 10만큼 1로 초기화 한 후 범위를 3으로 축소하게 된다면 어떻게 될지 확인하겠습니다.
// 범위 10을 값 1로 초기화
vector<int> v(10, 1);
// 범위를 3으로 축소
v.resize(3);
for (int i = 0; i < v.size(); i++) {
cout << v[i] << " ";
}
cout << endl;
실행2
만약 위 실행1과 반대되는 상황인 범위는 작게하고 범위를 늘리게 된다면 어떻게 되는지 확인해보겠습니다.
// 범위 3을 값 1로 초기화
vector<int> v(3, 1);
// 범위를 10으로 확장
v.resize(10);
for (int i = 0; i < v.size(); i++) {
cout << v[i] << " ";
}
cout << endl;
결과1 | 결과2 |
---|---|
범위 10만큼 1로 초기화 한 후 범위를 3으로 축소하게 된다면 3을 제외한 나머지(7)부분은 삭제하고 범위 3만큼 남기게 됩니다.
범위 3만큼 1로 초기화 한 후 범위를 10으로 확장하게 된다면, 확장되는 7만큼의 범위는 0으로 초기화한 상태로 확장하게 된다.
erase() / pop_back() : 삭제
vector<int> v;
for (int i = 1; i < 10; i++) {
v.push_back(i);
}
// vector.erase(pos) : pos 위치에 data 및 공간 삭제
v.erase(v.begin());
// vector.pop_back() : 맨 뒤의 data를 삭제
v.pop_back();
결과
swap
vector<int> v;
vector<int> v2 = { 5,6,7,8,9 };
v.swap(v2);
결과