ㅇ 벡터
- 동일 타입의 자료 집합인 시퀀스 컨테이너의 대표
- 내부 구성원리는 C의 정적 배열과 거의 유사
- 요소들의 크기가 같고 인접한 위치에 이웃하여 배치된다
- 메모리를 적게 차지
- 임의 위치를 빠른 속도로 엑세스
- 삽입,삭제속도 느림 ( 인접 배치 원칙을 지키기 위해서 요소를 이동시켜야됨)
- template <class Type, class Allocator = allocator<Type> > class vector
class Type : 요소 타입, class Allocator : 할당기(생략가능)
ㅇ 벡터의 생성자
- explicit vector(); /// 디폴트 생성자
- explicit vectorr(size_type n, const T& v = T() ); /// 크기 와 T 타입의 초기값 지정
- vector (const vector& x); /// 복사 생성자
- vecotr (const_iterator first, const_iterator last ) ; /// 구간 복사 생성자
ㅇ 생성자 예제
1 #include <iostream>
2 #include <string>
3 #include <vector>
4
5 using namespace std;
6
7 template <typename C>
8 void dump(const char *desc, C c)
9 {
10 cout.width(12);
11 cout << left << desc << "==> " ;
12 copy(c.begin(), c.end(), ostream_iterator<typename C::value_type>(cout," "));
13 cout << endl;
14 }
15
16 void main()
17 {
18
19 /// 디폴트생성자
20 vector<string> v1;
21 dump("v1",v1);
22
23 /// 실수형벡터, 크기10, 초기값X
24 vector<double> v2(10);
25 dump("v2", v2);
26
27 /// 정수형벡터, 크기10, 초기값7
28 vector<int> v3(10, 7);
29 dump("v3", v3);
30
31 /// v3 벡터의복사(깊은복사)
32 vector<int> v4(v3);
33 dump("v4", v4);
34
35 /// 반복자구간을받아들이는생성자, (주의)반복자의끝은항상제외
36 int ar[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
37 vector<int> v5(&ar[2], &ar[5]);
38 dump("v5", v5);
39 }
- 벡터는 요소 저장을 위한 메모리를 자동으로 관리 ==> string의 관리 함수들과 거의 유사
ㅇ 멤버 함수
- resize 지정한 크기로 요소 수를 늘린다.
- capacity는 할당되어 있는 메모리양, 크기는 size보다 크거나 같다.
- reserve는 미리 메모리를 할당해 놓는 함수
- clear는 벡터를 비운다.
- empty 벡터가 비어 있는지 점검
ㅇ 멤버 함수 예
1 #include <iostream>
2 #include <vector>
3 using namespace std;
4
5 void main()
6 {
7 vector<int> vi;
8
9 /// 최대크기
10 printf("max_size = %d\n", vi.max_size());
11
12 /// '123', '456' 를추가, capacity : 할당되어있는메모리양, size 보다크거나같다
13 vi.push_back(123);
14 vi.push_back(456);
15 printf("size = %d, capacity = %d\n", vi.size(), vi.capacity() );
16
17 // 크기를변경, 새로할당된요소는0으로초기화
18 vi.resize(10);
19 printf("size = %d, capacity = %d\n", vi.size(), vi.capacity() );
20
21 /// 메모리를미리할당
22 vi.reserve(20);
23 printf("size = %d, capacity = %d\n", vi.size(), vi.capacity() );
24 }
ps : 출처 및 자세한 내용은 www.WinAPI.co.kr 참고
'[ C/ C++ 프로그래밍 ] > [ STL ]' 카테고리의 다른 글
[ 혼연 정리 ] 시퀀스 컨테이너 - 3 [ 벡터 ] (0) | 2010.06.24 |
---|---|
[ 혼연 정리 ] 시퀀스 컨테이너 - 2 [ 벡터 ] (0) | 2010.06.24 |
[ 혼연 정리 ] 반복자- 1 [ 반복자 정의 ] (2) | 2010.06.24 |
[ 혼연 정리 ] 함수객체- 5 [어뎁터 ] (1) | 2010.06.24 |
[ 혼연 정리 ] 함수객체- 4 [함수 객체의 종류] (0) | 2010.06.24 |