728x90
# 헤더
#include <vector>
# 생성자
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void main()
{
vector<string> v1; // 디폴트 생성자. 비어있음.
vector<double> v2(10); // 10칸짜리 double형 배열.
vector<int> v3(10, 7); // 10칸 7로 채워진 int형 배열.
vector<int> v4(v3); // v3를 복사하여 생성된 배열.
int arr[] = {1,2,3,4,5,6,7,8,9};
vector<int> v5(&arr[2], &arr[5]); // arr[2] ~ arr[4] 를 복사하여 생성된 배열.
vector<int> vArr[3]; // ()가 아닌 []로 생성하면 vector배열이 3개가 생성된다.
vArr[0].push_back(1);
vArr[0].push_back(2);
vArr[1].push_back(10);
vArr[2].push_back(12);
vArr[3].push_back(100);
vector<pair<int, int> > vPair; // pair형 벡터도 가능합니다.
vPair.push_back({5,6});
}
각 벡터의 값
v1 = {};
v2 = {0,0,0,0,0,0,0,0,0,0};
v3 = {7,7,7,7,7,7,7,7,7,7};
v4 = {7,7,7,7,7,7,7,7,7,7};
v5 = {3,4,5};
vArr[0][0] = 1;
vArr[0][1] = 2;
vArr[1][0] = 10;
vArr[1][1] = 20;
vArr[2][0] = 100;
vPair[0].first = 5;
vPair[0].second = 6;
# vector 멤버 함수::용량 함수
함 수 | 설 명 |
size | 사용중인 요소 개수를 조사한다. |
capacity | 확보해 놓은 요소 개수를 구한다. size(실 사용중인 크기) <= capacity (사용 예정 공간까지 더한 크기) |
resize(n) | 크기를 변경한다. 새로운 크기가 더 클 경우 기존 내용은 유지되고, 새로운 요소는 0으로 초기화된다. |
reserve(n) | 벡터가 사용할 메모리 공간을 미리 확보해 놓는다. 새로운 크기가 더 클 경우 기존 내용은 유지되고, 새로운 요소는 초기화되지 않는다. |
empty | 벡터가 비어 있는지 조사한다. |
#include <iostream>
#include <vector>
using namespace std;
void main()
{
vector<int> vi;
printf("size = %d, capacity = %d\n",vi.size(),vi.capacity());
vi.push_back(123);
vi.push_back(456);
printf("size = %d, capacity = %d\n",vi.size(),vi.capacity());
vi.resize(10);
printf("size = %d, capacity = %d\n",vi.size(),vi.capacity());
vi.reserve(20);
printf("size = %d, capacity = %d\n",vi.size(),vi.capacity());
}
size = 0, capacity = 0
size = 2, capacity = 2
size = 10, capacity = 10
size = 10, capacity = 20
# Vector 멤버 함수::삽입과 삭제
함수 | 설명 |
push_back(n) | 벡터 끝에 새로운 요소 n을 추가한다. |
pop_back() | 벡터 마지막 요소의 값을 리턴하고 요소를 삭제한다. |
insert(iterator it, n) | 벡터의 it이 가리키는 위치에 요소 n을 끼워넣는다. |
erase(iterator it) | 벡터의 it이 가리키는 위치의 요소를 삭제한다. |
front() | 첫 번째 요소에 접근한다. |
operator[i] | i 번째 요소에 접근한다. 예외처리없음. |
at(i) | i 번째 요소에 접근한다. 예외처리 발생. |
back() | 마지막 요소에 접근한다. |
clear() | 벡터의 모든 요소를 삭제한다. |
swap(v2) | 다른 벡터 v2와 요소를 전부 교환한다. |
#include <stdio.h>
#include <vector>
using namespace std;
int main(){
vector<int> v; // 비어있는 벡터 생성
for(int i=0; i<10; i++)
v.push_back(i); // 벡터에 0 ~ 9까지 추가
for(int i=0; i<v.size(); i++)
printf("%d ", v[i]); // 벡터 요소를 출력해본다
printf("\n");
vector<int>::iterator it = v.begin(); // 반복자를 선언하고 벡터의 첫 요소를 가리킨다
// 반복자는 +, -, ++, --를 이용해 벡터 요소를 이동하며 가리킬 수 있다.
// 첫 요소는 v[0]인 셈이므로 it+2를 하면 v[2]를 가리키는 것
// 즉 v[2]에 8을 대입하고 그 이후 요소를 뒤로 이동시킨다
v.insert(it+2, 8);
for(int i=0; i<v.size(); i++)
printf("%d ", v[i]); // insert 이후 벡터 요소를 출력해본다
return 0;
}
0 1 2 3 4 5 6 7 8 9
0 1 8 2 3 4 5 6 7 8 9
# vector 2차원 배열 선언
#include <vector>
// arr[n][m] = {0}; 의 형태로 선언
vector<vector<int>> arr(n, vector<int>(m, 0));
// 컴파일러에 따라 에러가 날 경우
// 아래처럼 vector<vector<int>와 > arr(... 사이를 한 칸 띄우면 해결된다.
vector<vector<int> > arr(n, vector<int>(m, 0));
728x90
'Lang > C++' 카테고리의 다른 글
[C++] 컨테이너 어댑터 Stack (0) | 2022.12.07 |
---|---|
[C++] STL 연관 컨테이너 Map (0) | 2022.12.01 |
[C++] 구조체를 확장하면? 클래스! (0) | 2022.11.24 |