728x90
반응형
1. 벡터란?
코딩테스트를 준비하면서 나는 c++를 사용하기로 했다.
이 때 가장 중요하게 생각했던 것이 데이터를 담는 라이브러리 및 자료형인데
배열은 처리하는 속도가 빠른 반면 크기가 한정되어 있어 처음부터 크기가 정해져있지 않은 문제에서는 문제가 발생할 수 있다.
벡터를 선언하는 것은 간단하다.
우선 vector 라이브러리를 추가해준다.
#include <vector>
벡터를 사용할 때
- 크기 변경 가능 o
- 중간 삽입, 삭제 용이 X
- 순차 접근 가능 o
- 랜덤 접근 가능 o
2. 벡터의 생성 및 초기화
//1차원 벡터
vector <int> vec1;
vector <char> vec2;
vector <string> vec3;
//1차원 사용자 정의형 벡터
struct user {
int id;
string name;
};
// 사용자 정의형 vector
vector<user> v4(3, {1,"정호"});
//2차원 벡터
vector<vector<int>> A;
vector<vector<char>> B;
vector<vector<string>> C;
//1차원 벡터의 초기화 1
//vector<자료형> 벡터이름 (개수, 기본 값);
vector<int> v1(3, 5);
vector<char> v2(10, 'a');
//1차원 벡터의 초기화2
//vector<자료형> 벡터이름 {요소들}
vector<int> vec1 = {1,2,3,4};
vector<char> vec2 = {'a','b','c'};
//2차원 벡터의 초기화
//vector<vector<자료형>> 벡터이름 (가로 개수, vector<자료형>(세로 개수, 기본 값)
vector<vector<int>> A (10, vector<int>(5,2));
vector<vector<char>>B (10, vector<char>(10, 'a'));
3. 벡터의 내장함수
//1차원 벡터 내장함수
cout << "iterator함수 insert" << endl;
v1.insert(v1.begin() + 5, 3);
for (int i = 0; i < v1.size(); i++)
{
cout << v1[i] << " ";
}
cout << endl;
cout << "iterator함수 erase" << endl;
v1.erase(v1.begin() + 4);
for (int i = 0; i < v1.size(); i++)
{
cout << v1[i] << " ";
}
cout << endl;
cout << "2차원 int vector " << endl;
//2차원 벡터 출력
for (int i = 0; i < 5; i++) {
for (int u = 0; u < 4; u++)
{
cout << vec1[i][u] << " ";
}
printf("\n");
}
4. 벡터의 iterator
iterator 란 벡터에 접근하기 위한 포인터와 같은 객체라고 볼 수 있다.
iterator를 얻기 위해서는 내장함수들을 사용해야하는데
- begin() -vector의 첫번째 원소
- end() - vector 의 마지막 원소
- insert(v.begin() + 위치, 넣고자 하는 값)
- erase(v.begin() + 위치)
등의 내장함수는 모두 iterator개념을 이용하여 사용해야 한다.
728x90
반응형
'c++' 카테고리의 다른 글
[c++] 코딩테스트 준비 과정 중 자주 쓰는 STL 정리 _ string 처리 (0) | 2023.01.02 |
---|---|
[c++] Huffman Algorithm - 파일 압축 알고리즘 (0) | 2022.04.28 |
heap sort (0) | 2022.03.15 |
DoubleLinkedList (0) | 2022.03.13 |
자료구조 stack을 이용한 문제 풀이 1(postfix) (0) | 2021.06.18 |
댓글