일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- csr
- 파이어베이스
- 자바스크립트
- todolist
- react-query
- JS
- 달리기경주
- useMutation
- NextJS
- 투두리스트
- React
- 넥스트
- 생명주기
- 리엑트
- Next
- programmers
- SSR
- JavaScript
- Firebase
- next-pwa
- 배열
- 리액트
- 겹치는 선분의 길이
- debounce
- lifecycle
- Recoil
- google firebase
- 리덕스
- Redux
- customModal component 만들기
- Today
- Total
끄적끄적
[C++]Vector Container 개념 & 사용법 본문
오늘은 C++언어에서 자주 사용되는 Vector에 대해 이야기 해보려고합니다.
우선 배열이란 ? 같은 타입의 요소들로 이루어진 유한개의 집합입니다.
인덱스는 0부터 시작하며 1씩증가하며 양의 정수의 인덱스를 갖습니다.
int arr[10] = [1,2,3,4,5,6,7,8,9,10];
cout << arr[0]; // 1 출력
cout << arr[9]; // 10 출력
cout << arr[10]; // 오류(없는 index에 접근 하게 됨)
코딩을 하다보면 배열은 정말 셀 수 없이 사용하게 되죠...
배열의 장점은 정확한 index를 알고있다면 빠르게 데이터를 조회할 수 있는 장점이 있습니다.
하지만 수만개의 데이터를 가진 배열에서 index를 모르고 데이터를 찾고자하면 모든 배열요소를 뒤져바야하는 단점도 있습니다.
또한 정적인 배열크기를 갖는 것 부터, 특정 요소를 삭제하거나 , 특정 위치에 요소를 추가하고 싶을때 새로운 배열을 생성하고 밀고 당기고 해서 다시 만들어야함으로 매우 귀찮게 됩니다..
이러한 단점을을 해결해주고 자동으로 메모리를 할당하고, 추가, 삭제 등을 쉽게 알아서 해주는 C++ STL 중 Vector Container 가 있습니다.
1. Vector 사용하기
● 헤더파일을 추가합니다. (#include <vector>)
● 편리하게 사용하기 위해 using namespace std; 추가!
● 선언하기. (vector<자료형> 이름;) ex. vector<string> stringVector;
2. Vector의 구조
기본적인 구조로 Index로 접근할 수 도 있고 배열의 사이징, 밀고 당기기는 알아서 해줍니다.
3. Vector의 멤버 함수
vector<int> v;
함수 | 내용 |
v[index] | index번째 데이터를 참조합니다. |
v.front(); | 첫번째 데이터를 참조합니다. |
v.back(); | 마지막 데이터를 참조합니다. |
v.clear(); | 모든 데이터를 제거합니다. (size만 줄어듭니다) |
v.push_back(value); | 마지막에 value 데이터를 추가합니다. |
v.pop_back(); | 마지막 데이터를 제거합니다. |
v.resize(size); | 크기를 size로 변경합니다. |
v.size(); | 데이터의 개수를 반환합니다. |
v.insert(index, value); | index의 위치에 value를 삽입합니다. (iterator 반환) |
v.erase(iter); | iter가 가리키는 원소를 제거합니다. |
v.empty() | 비어있으면 true, 아니라면 false를 반환합니다. |
4. 반복자 iterator
반복자는 컨테이너에 있는 데이터들을 접근하고 순회하는데 사용됩니다.
멤버함수를 보시면 iter를 사용하는 함수들이 있는데 이들은 반복자를 사용하여 Container를 사용한 것입니다.
이번시간에는 vector와 같이 사용하는 iterator의 예제를 통해 간단 예제를 만들어보겠습니다.
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> v;
for(int i=0; i<10; i++){
v.push_back(i);
}
// [0,1,2,3,4,5,6,7,8,9]
vector<int>::iterator it = v.begin();
for(it; it!=end(); it++){
cout << *it << " " ;
}
// 0 1 2 3 4 5 6 7 8 9
}
지금 까지 Vector에 대한 개념과 기본적인 사용법이었습니다.
배열은 아마 가장 많이 사용되는 자료구조가 아닐까 싶습니다. 그만큼 정확히 알고 있어야하고 정확히 사용해야합니다.
읽어주셔서 감사합니다. 틀린 정보나 추가사항이 필요하시면 댓글로 알려주세요.