Fogeaters, Light The World.

14

2016-Dec

[C++ STL] std::vector

작성자: title: MoonBlonix IP ADRESS: *.64.228.3 조회 수: 1736

* 대용량의 배열을 관리하기 원한다면 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);

모든 벡터 출력

profile
profile

title: MoonBlonix

2016.12.15 23:02
*.64.228.3

출처 :: 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=v.erase(p)

p가 가리키는 원소를 제거한다. q는 다음 원소를 가리킨다. 

 q=v.erase(b,e)

반복자 구간 [b,e)의 모든 원소를 제거한다. q는 다음 원소 

 v.front()

v의 첫 번째 원소를 참조한다. 
 q=v.insert(p,x)

p가 가리키는 위치에 x 값을 삽입한다. q는 삽입한 원소를 가리키는 반복자다. 

 v.insert(p,n,x)

p가 가리키는 위치에 n개의 x 값을 삽입한다. 
 v.insert(p,b,e)

p가 가리키는 위치에 반복자 구간 [b,e)의 원소를 삽입한다. 

 x=v.max_size()

x는 v가 담을 수 있는 최대 원소의 개수(메모리의 크기) 

 v.pop_back()

v의 마지막 원소를 제거한다. 
 v.push_back()v의 끝에 x를 추가한다. 

 p=v.rbegin()

p는 v의 역 순차열의 첫 원소를 가리키는 반복자다. 
 p=v.rend()

p는 v의 역 순차열의 끝을 표식하는 반복자 

 v.reserve(n)n개의 원소를 저장할 공간을 예약한다. 

 v.resize(n)

v의 크기를 n으로 변경하고 확장되는 공간의 값을 기본값으로 초기화 한다. 

 v.resize(n,x)

v의 크기를 n으로 변경하고 확장되는 공간의 값을 x 값으로 초기화한다. 
 v.size()v의 원소 갯수 

 v.swap(v2)

v와 v2를 swap한다. 


연산자 

 v1==v2

v1과 v2의 모든 원소가 같은가? (bool) 

 v1!=v2

v1과 v2의 모든 원소 중 하나라도 다른 원소가 있는가? 

 v1<v2

문자열 비교처럼 v2가 v1보다 큰가? 

 v1>v2

문자열 비교처럼 v1이 v2보다 큰가? 

 v[i]

v의 i번째 원소를 참조한다. 


profile

title: Zwei츠바이

2017.02.23 17:57
*.81.163.98

배열이였어..?


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 [Web] 클라우드 IDE + 2 title: MoonBlonix 2017-06-25 15126
91 [web] 제로보드처럼 url 줄이기 + 1 title: MoonBlonix 2017-08-04 1654
90 [php] 환경변수 $_SERVER title: MoonBlonix 2017-08-04 1685
89 [mysql] 테이블 수정 title: MoonBlonix 2017-08-04 1612
88 [Javascript] 섬세한 뒤로가기 구현 title: MoonBlonix 2017-08-01 1496
87 [php] 쿠키 사용하기 title: MoonBlonix 2017-08-01 1741
86 [javascript] POST 전송하기 title: MoonBlonix 2017-07-31 1605
85 [Web]다국적 웹사이트 제작 title: MoonBlonix 2017-07-27 1925
84 [php] 5 -> 7 변경점 정리 title: MoonBlonix 2017-07-23 1342
83 [php/mysqli] 설치 및 연동 + 2 title: MoonBlonix 2017-07-23 1691
82 [MySQL] 설치 및 기초명령어 title: MoonBlonix 2017-07-19 1006
81 [Web] JQuery 설치 title: MoonBlonix 2017-07-04 1672
80 [CSS] Toggle Switch Examples title: MoonBlonix 2017-07-01 1831
79 [CSS] Input Text Styles title: MoonBlonix 2017-07-01 1690
78 [Web] CSS 프론트엔드 워크프레임 소개 title: MoonBlonix 2017-06-25 1442
77 [C++] 코딩시 좋은 습관들 : 스타일 title: MoonBlonix 2017-06-11 1574
76 [PHP] 강좌 모음 + 1 title: MoonBlonix 2017-06-08 1907
75 [Arduino] 아두이노로 GPS(위치) 추적기(GPS Tracker)를 만들어 보았다 + 1 2N 2017-03-06 1423
74 [AI]딥러닝 공부 가이드 (SW 준비편) title: MoonBlonix 2017-01-15 1500
» [C++ STL] std::vector + 2 title: MoonBlonix 2016-12-14 1736