1. 다음 중 vector 컨테이너의 특징을 고르세요.
1. 시퀀스 컨테이너입니다.
2. sort( ), splice( ) 멤버함수를 제공합니다. (vector 자체에서 sort splice는 제공하지 않음)
3. 배열 기반 컨테이너 입니다.
4. 컨테이너 앞, 뒤로 추가/제거가 가능합니다. (vector는 뒤로 추가 제거만 가능)
5. 임의 접근 반복자를 제공합니다.
6. reserve( ) 멤버 함수를 제공합니다.
7. 빠른 시간(상수 시간)에 원소를 삽입, 삭제 할 수 있습니다. (삽입 삭제 시 필요한 만큼의 메모리 공간을 위해 빠른 시간 내에 할 수는 없음)
답: 1, 3, 5, 6
2. 다음 중 deque 컨테이너의 특징을 고르세요.
1. 시퀀스 컨테이너 입니다.
2. sort( ), splice( ) 멤버 함수를 제공합니다. (deque에서 제공하지 않음)
3. 배열 기반 컨테이너 입니다.
4. 컨테이너 앞, 뒤로 추가, 제거가 가능합니다.
5. 임의 접근 반복자를 제공합니다.
6. reserve( ) 멤버 함수를 제공합니다. (deque는 capacity가 없음)
7. 빠른 시간(상수 시간)에 원소를 삽입, 삭제 할 수 있습니다. (블록 단위 메모리를 할당하며 되기때문에 그리 빠르진 않음)
답: 1, 3, 4, 5
3. 다음 중 list 컨테이너의 특징을 고르세요.
1. 시퀀스 컨테이너 입니다.
2. sort( ), splice( ) 멤버 함수를 제공합니다.
3. 배열 기반 컨테이너 입니다. (list는 노드 기반 컨테이너)
4. 컨테이너 앞, 뒤로 추가, 제거가 가능합니다.
5. 임의 접근 반복자를 제공합니다. (양방향 접근 반복자를 제공함)
6. reserve( ) 멤버 함수를 제공합니다.
7. 빠른 시간(상수 시간)에 원소를 삽입, 삭제 할 수 있습니다. (노드만 삽입 삭제하기 때문에 배열 기반보다 빠름)
답: 1, 2, 4, 7
4. 다음 iter가 가리키는 위치에 100원소를 삽입(insert) 하면 vector 컨테이너는 어떤 순차열을 가질까요?
▽
10 20 30 40 50 N
삽입 후
▽
10 100 20 30 40 50 N
6. size와 capacity가 모두 5인 vector 컨테이너에 reverse(10)를 사용하여 메모리를 10으로 확장하면 다음 size와 capacity는 얼마일까요?
reserve는 capacity의 크기를 예약하는 멤버 함수로 capacity의 크기를 10으로 할당 한다는 뜻.
답: capacity=10, size=5
7. vector의 [ ] 연산자와 at의 공통점과 차이점을 쓰세요.
[ ] 연산자와 at은 둘다 인덱스의 원소를 참조하는 기능을 합니다.
하지만 at은 vector의 인덱스 범위를 검사 후 참조하고 [ ] 연산자는 범위 검사를 하지 않고 참조하기 때문에 [ ] 연산자가 더 빠르고 at은 인덱스 범위 검사 시 범위를 벗어날경우 바로 throw를 던져 오류를 표시합니다.
8. vector와 deque의 가장 큰 차이점을 쓰세요.
vector는 뒤로 삽입 삭제가 가능하지만, deque는 앞,뒤로 삽입 삭제가 가능합니다.
vector의 삽입 시 필요한 만큼의 메모리 공간을 추가한 메모리 공간을 생성하여 원소를 삽입하고 기존 메모리공간은 삭제하는 식으로 동작하고,
deque의 삽입 시 블록 단위의 메모리 공간을 추가하여 앞 뒤로 추가됩니다.
9. vector와 list의 가장 큰 차이점을 쓰세요.
vector는 배열 기반 컨테이너이고, list는 노드 기반 컨테이너 입니다.
그렇기에 vector에는 임의 접근 반복자를 제공하고, list에는 양방향 접근 반복자를 제공합니다.
10. 다음 물음에 답하세요.
1. vector가 제공하는 반복자와 list가 제공하는 반복자를 쓰세요.
vector: 임의 접근 반복자 / list: 양방향 접근 반복자
2. vector와 list의 공통점을 쓰세요.
원소의 순서가 지켜지는 컨테이너
3. vector의 erase( )와 list의 erase( )의 차이점을 쓰세요.
vector의 erase( )는 삭제한 원소의 뒤에 원소를 모두 앞당겨야 하지만, list의 erase( )는 삭제할 노드만 삭제하면 됩니다.
4. vector의 insert( ) 와 list의 insert( )의 차이점을 쓰세요.
erase와 동일하게 vector의 insert( )는 삽입한 뒤의 원소를 모두 밀어야하지만 list의 insert( )는 삽입 할 노드만 끼워주면 됩니다.
11. list가 sort( ) 멤버 함수를 제공하는 이유를 생각해보고 이유를 찾아 쓰세요.
sort( ) 알고리즘은 임의 접근 반복자를 지원하는 컨테이너만 사용할 수 있습니다. (quick sort로 구현됨)
그렇기에 list는 자체 sort( ) 멤버 함수를 가짐.
12. list의 insert( ) 멤버 함수와 splice( ) 멤버 함수의 차이점을 쓰세요.
insert( )는 원본의 순차열에 변화가 없지만, splice( )는 원본의 순차열을 잘라내어 대상 순차열에 붙입니다.
'C++ > STL' 카테고리의 다른 글
[STL] Map 컨테이너 (0) | 2025.03.22 |
---|---|
[STL] Set 컨테이너 (0) | 2025.03.22 |
[STL] list 컨테이너 (0) | 2025.03.16 |
[STL] Deque 컨테이너 (0) | 2025.03.15 |
[STL] Vector 컨테이너 (0) | 2025.03.10 |