| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 기술면접
- 반복문
- map
- 자료구조
- 알고리즘
- 차이점
- std::unordered_map
- Queue
- list
- 인프런
- 객체지향
- 배열
- 힙영역
- 큐
- 공부
- rookiss
- thread
- 프래그멘테이션
- 트리
- std::map
- 스택
- vector
- c#
- 벡터
- 스택영역
- 멀티쓰레드
- 리스트
- static_cast
- 해쉬맵
- MonoBehaviour
- Today
- Total
목록vector (8)
호빵의 IT 개발소
맵의 find보다 벡터의 find가 더 빠른 경우 요약데이터 양이 적고,검색 횟수가 적거나,정렬/키 기반 접근이 필요 없는 경우→ 이럴 땐 벡터의 순차 탐색(linear search)이 더 빠를 수 있음 면접 스타일 답변 예시:일반적으로 맵은 키 기반 탐색 시 O(log n) 또는 O(1)의 시간 복잡도를 가지지만, 데이터의 양이 적거나 검색이 자주 발생하지 않는 경우에는 벡터의 순차 탐색이 오히려 더 빠를 수 있습니다.이는 맵이 내부적으로 트리나 해시 테이블 구조를 사용하기 때문에, 적은 양의 데이터에 대해서는 구조적 오버헤드가 발생할 수 있기 때문입니다.따라서 데이터 규모나 접근 패턴에 따라 구조를 선택하는 것이 중요합니다.
벡터(Vector) vs 배열(Array) 차이점 요약크기배열: 고정 크기, 선언 시 크기 지정벡터: 동적 크기, 필요 시 자동 확장메모리 관리배열: 수동 관리, 개발자가 크기 신경 써야 함벡터: 내부적으로 자동 메모리 재할당기능배열: 단순한 데이터 저장벡터: push_back, size, resize, insert 등 다양한 함수 제공복사/대입배열: 복사 시 반복문 필요벡터: 대입 연산자 및 복사 생성자 지원 면접 스타일 답변 예시:배열은 고정된 크기를 가지며 메모리 크기를 직접 지정해야 하는 반면 벡터는 크기가 동적으로 변하며 자동으로 메모리를 관리해줍니다.또한 벡터는 삽입, 삭제, 크기 조절과 같은 다양한 유틸리티 함수를 제공하여 훨씬 더 유연하게 사용할 수 있습니다.따라서 크기가 정해져 있지 않..
리스트(List) vs 벡터(Vector) 차이점구조리스트: 연결 리스트(Linked List), 노드 간 포인터로 연결벡터: 동적 배열(Dynamic Array), 연속된 메모리 공간 사용접근 속도리스트: 순차 접근 → O(n)벡터: 인덱스로 직접 접근 → O(1)삽입/삭제리스트: 중간 삽입/삭제 빠름 (O(1), 위치 알 경우)벡터: 끝 삽입은 빠르지만, 중간은 느림 (O(n))메모리리스트: 포인터 추가 저장 → 메모리 사용 많음벡터: 연속된 공간 사용 → 메모리 효율 좋음 면접 스타일 답변 예시:리스트는 연결 리스트 기반으로 구성되어 노드 간 포인터를 통해 연결되며 중간 삽입이나 삭제가 빠른 반면 인덱스 접근은 느립니다.반면 벡터는 동적 배열로 구현되어 있어 연속된 메모리 공간을 사용하고 인덱스를..
벡터 재할당 속도를 줄이려면 reserve()로 미리 용량 확보 → 재할당 횟수 감소resize()보다 reserve() 우선 사용 → 메모리만 확보하고 실제 크기는 그대로 유지push_back() 반복 시 용량 예측 후 reserve → 매번 capacity 2배 증가 방지불필요한 복사 피하기 위해 move semantics 활용 → 복사보다 이동이 빠름 요약: 미리 reserve로 필요한 만큼 확보하고 불필요한 복사 줄이기!
벡터의 재할당(Resize)란?벡터 크기 또는 용량(capacity)을 변경하는 과정내부적으로 새 메모리 할당 후 기존 데이터 복사 재할당이 발생하는 경우push_back() 등으로 capacity 초과 시resize(n) 호출 시 현재 size보다 크면 새 공간 할당 예시std::vector v;v.push_back(1); // capacity 부족 시 자동 재할당v.resize(10); // size를 10으로 늘림, 새 요소는 0으로 초기화 주의사항재할당 시 주소가 바뀐다 → 기존 포인터, 참조 무효화됨성능 이슈 발생 가능 → 많은 데이터 추가 시 reserve()로 미리 용량 확보 추천 요약: 벡터는 용량 초과 시 자동 재할당하며, 이 과정에서 복사 비용과 주소 변경이 발생함.
벡터(Vector)란C++ STL의 동적 배열 컨테이너크기가 자동으로 조절되는 배열특징임의 접근 O(1) (v[i], at(i))끝에 삽입/삭제 O(1) (평균)중간 삽입/삭제는 O(n)메모리 자동 관리 (용량 초과 시 자동 재할당)요약: 동적 크기를 지원하는 배열형 자료구조, 빠른 접근과 유연한 사용이 강점.예시std::vector v;v.push_back(10);int x = v.at(0); // 10 면접 스타일 답변 예시:벡터(Vector)는 동적 배열로 메모리 상에 연속적으로 저장되는 자료구조입니다.C++ STL의 std::vector가 대표적이며 요소 접근은 빠르지만 중간 삽입·삭제 시에는 비용이 발생합니다.게임 서버에서는 고정 크기 배열보다 유연성이 필요할 때 자주 사용되며 메모리 재할당..
개선 방법:배열 기반 리스트 (Array List, vector) 사용at(index)가 O(1)인덱스로 바로 접근 가능단, 삽입/삭제는 느림Skip List여러 레벨의 포인터로 빠르게 탐색평균 검색 O(log n)연결 리스트보다 훨씬 빠름인덱스 캐싱 또는 포인터 캐싱예: 10만 단위로 포인터 저장 → 해당 구간부터 탐색 시작부분 접근 속도 개선 비효율적인 구조:단일 연결 리스트는 at(index)가 O(n) → 100만 번째 데이터 접근 시 매우 느림요약: vector로 구조 변경하거나 Skip List 또는 인덱스 캐싱으로 접근 성능 개선 가능.
STL (Standard Template Library)란C++에서 제공하는 표준 자료구조 및 알고리즘 템플릿 라이브러리주요 구성요소:컨테이너 – 자료구조 (vector, list, map, set 등)반복자(Iterator) – 컨테이너를 탐색하는 포인터 같은 객체알고리즘 – 정렬, 탐색, 복사 등 (sort, find, count 등)장점:재사용성 높고, 성능 최적화 잘 되어 있음코드 간결하고 안정성 높음요약: C++에서 자주 쓰는 자료구조 + 알고리즘을 모아둔 표준 라이브러리. 면접 스타일 답변 예시:STL은 C++에서 자주 쓰이는 자료구조와 알고리즘을 템플릿 기반으로 제공하는 표준 라이브러리입니다.대표적으로 vector, map, set, queue 같은 컨테이너랑 sort, find 같은 알고..