14
2016-Dec
[C++ STL] std::vector
작성자: Blonix
IP ADRESS: *.64.228.3 조회 수: 1735
* 대용량의 배열을 관리하기 원한다면 vector 대신 list 이용이 유리
* 동적으로 알아서 배열 크기를 늘려주는 스마트 배열이라고 생각하면 편하다.
* 크기 한계에 다다를 때마다 메모리를 두배씩 재할당해서 커진다.
#include "vector"
를 통해 이용 가능하다. 물론 C++ 환경에서.
using namespace std;
를 안 쓸 생각이면 일일이 std::vector 해줘야 한다.
----------------------사용법
vector<char*> haha;
이런느낌으로 생성한다.
haha[1]
이런 느낌으로 접근한다.
만약 예외처리를 포함해 안정적인(대신 느린) 접근을 원한다면 haha(1) 을 이용할 수 있다.
haha.push_back(문자배열ptr);
이런느낌으로 배열뒤에 덧붙인다.
haha.size();
haha.capacity();
는 대충 안봐도 알거라 믿는다. (unsigned int 리턴)
haha.reserve(32);
백터의 용량을 최소 32개로 늘린다.
haha.reserve(haha.size() + 10); 같은 응용도 된다.
haha.resize(16);
벡터 용량을 16에 맞춘다.
haha.erase(2);
2번째 항목 제거한다.
haha.insert(4, 변수);
변수를 4번째 항목의 위치에 끼워넣는다.
haha.pop_back();
끝 항목 삭제
show(haha);
모든 벡터 출력
출처 :: http://hyeonstorage.tistory.com/324
생성자
vector v
v는 빈 컨테이너이다.
vector v(n)
v는 기본값으로 초기화된 n개의 원소를 갖는다.
vector v(n,x)
v는 x 값으로 초기화된 n개의 원소를 갖는다.
vector v(v2)
v는 v2 컨테이너의 복사본이다.(복사 생성자 호출)
vector v(b,e)
v는 반복자 구간 [b,e)로 초기화된 원소를 갖는다.
멤버함수
v.assign(n,x)
v에 x 값으로 n개의 원소를 할당한다.
v.assign(b,e)
v를 반복자 구간 [b,e)로 할당한다.
v.at(i)
v의 i번째 원소를 참조한다.
v.back()
v의 마지막 원소를 참조한다.
p=v.begin()
p는 v의 첫 원소를 가리키는 반복자
x=v.capacity()
x는 v에 할당된 공간의 크기
v.clear()
v의 모든 원소를 제거한다.
v.empty()
v가 비었는지 조사한다.
p=v.end()
p는 v의 끝을 표식하는 반복자
p가 가리키는 원소를 제거한다. q는 다음 원소를 가리킨다.
반복자 구간 [b,e)의 모든 원소를 제거한다. q는 다음 원소
v.front()
p가 가리키는 위치에 x 값을 삽입한다. q는 삽입한 원소를 가리키는 반복자다.
v.insert(p,n,x)
p가 가리키는 위치에 반복자 구간 [b,e)의 원소를 삽입한다.
x는 v가 담을 수 있는 최대 원소의 개수(메모리의 크기)
v.pop_back()
p=v.rbegin()
p는 v의 역 순차열의 끝을 표식하는 반복자
v.resize(n)
v의 크기를 n으로 변경하고 확장되는 공간의 값을 기본값으로 초기화 한다.
v.resize(n,x)
v.swap(v2)
연산자
v1==v2
v1과 v2의 모든 원소가 같은가? (bool)
v1!=v2
v1과 v2의 모든 원소 중 하나라도 다른 원소가 있는가?
v1<v2
문자열 비교처럼 v2가 v1보다 큰가?
v1>v2
문자열 비교처럼 v1이 v2보다 큰가?
v[i]
v의 i번째 원소를 참조한다.