728x90
반응형
이번엔 모든 컨테이너에서 공통적으로 지니는 멤버 함수들을 정리해 볼 것이다.
Container 대신에 해당하는 컨테이너 및 자료형 타입을 기입하여 사용하면 된다.
생성자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
vector<int> v1; // 1. Container(), 컨테이너를 생성.
vector<int> v2(10); // 2. Container(size), 길이가 10개인(10*sizeof(type)) 컨테이너 생성.
vector<int> v3(10, 5); // 3. Container(size, value), 값이 5로 전부 채워진 길이 10개 컨테이너 생성.
vector<int> v4(v3.begin(), v3.begin()+4); // 4. Container(iterator, iterator), v3의 값을 복사하며 생성.
vector<int>::iterator it;
cout << endl << "v2---" << endl;
for (it = v2.begin(); it < v2.end(); it++)
cout << *it << ", ";
cout << endl << "v3---" << endl;
for (it = v3.begin(); it < v3.end(); it++)
cout << *it << ", ";
cout << endl << "v4---" << endl;
for (it = v4.begin(); it < v4.end(); it++)
cout << *it << ", ";
|
cs |
empty()와 clear()
1
2
3
4
5
6
7
8
9
10
11
12
|
vector<int> v1;
vector<int> v2(10);
vector<int> v3(10, 5);
vector<int> v4(v3.begin(), v3.begin()+4);
vector<int>::iterator it;
cout << "vector<int> v1; : " << v1.empty() << endl; // true 반환
cout << "vector<int> v2(10); : " << v2.empty() << endl; // false 반환
cout << "vector<int> v3(10, 5); : " << v3.empty() << endl; // false 반환
v4.clear(); // 모든 요소 제거
cout << "v4.clear(); : " << v4.empty() << endl; // true 반환
|
cs |
empty() 멤버 함수는 해당 콘테이너가 비어져있는지를 확인하는 함수이고, clear() 멤버 함수는 해당 콘테이너 속 요소를 모두 제거 한다.
begin(), end() 와 erase()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
vector<int> v1;
vector<int> v2(10);
vector<int> v3(10, 5);
vector<int> v4(v3.begin(), v3.begin()+4);
vector<int>::iterator it;
v3.erase(v3.begin(), v3.end() - 1); // 범위로 지우기 : v3.begin() 부터 (v3.end()-1)-1 까지 지운다.
for (it = v3.begin(); it < v3.end(); it++)
cout << *it << ", ";
cout << endl;
v3.erase(v3.begin()); // 위에서 하나 남기고 모두 지웠으니, 시작 하나만 지우면 다 지워지는 꼴.
for (it = v3.begin(); it < v3.end(); it++)
cout << *it << ", ";
cout << endl;
|
cs |
begin() 함수와 end() 함수는 콘테이너의 시작과 끝 위치를 iterator 형으로 리턴한다. erase 멤버 함수는 컨테이너 내의 요소를 지우는 함수인데, 8번 라인처럼 범위로 지울 수 있고, 13번 라인처럼 해당 요소에 대해서 지울 수 있다.
insert()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
vector<int> v3(10, 5);
vector<int> v4(5, 100);
vector<int>::iterator it;
v3.insert(v3.end() - 1, 9999);
for (it = v3.begin(); it < v3.end(); it++)
cout << *it << ", ";
cout << endl;
v4.insert(v4.end(), v3.begin(), v3.end());
for (it = v4.begin(); it < v4.end(); it++)
cout << *it << ", ";
cout << endl;
|
cs |
insert() 멤버 함수는 요소를 삽입하는 함수인데 마찬가지로, 5번 라인/11번 라인의 두 가지 형태로 삽입이 가능하다. 요소를 삽입하느냐, 범위로 삽입하느냐.
push_back(), pop_back()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
vector<int> v3(10, 5);
vector<int> v4(5, 100);
vector<int>::iterator it;
v3.push_back(1000000);
for (it = v3.begin(); it < v3.end(); it++)
cout << *it << ", ";
cout << endl;
v3.pop_back(); // 리턴 값이 없으며, 삭제만 가능하다.
for (it = v3.begin(); it < v3.end(); it++)
cout << *it << ", ";
cout << endl;
|
cs |
push_back 함수는 벡터의 가장 마지막에 요소를 추가, pop_back() 함수는 가장 마지막 요소를 삭제한다. 11번 라인에서의 주석처럼 pop_back()는 리턴 값이 없고 삭제만 가능하다.
operator=(), operator()==, size()
1
2
3
4
5
6
7
8
9
10
11
12
|
vector<int> v1({ 1,2,3,4,5 });
vector<int> v2;
cout << "v1.size() : " << v1.size() << endl;
v2 = v1; // operator()=
cout << "v2.size() : " << v2.size() << endl;
if (v1 == v2)
cout << "v1과 v2는 동일한 값을 지닙니다." << endl;
else
cout << "v1과 v2는 동일한 값을 지니지 않습니다." << endl;
|
cs |
이로써 공통 멤버함수들에 대한 정리 끝!
728x90
반응형
'프로그래밍응용 > Modern & STL' 카테고리의 다른 글
List (0) | 2020.09.14 |
---|---|
Deque (0) | 2020.09.13 |
Iterator( With vector ) (0) | 2020.09.13 |
Vector (0) | 2020.09.12 |
STL:Container, Iterator, Algorithm 개념 (0) | 2020.09.10 |