inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

안녕하세요! vecotr<pair<int,int>> map

254

화이티이닝

작성한 질문수 1

0

면접을 보다가 면접질문 중

map 과 정렬된 vector<pair<>> 비교하여 설명 하시오 라는 문제가 나왔습니다.

답변을 map 는 레드블랙트리기반의 중복이 허용되지않고 key 로 오름차순 정렬되어있으며,

안에 데이터는 pair 로 되어있다. vector<pair<>> 연속적인 메모리 구조를 가지고 있으며

랜덤엑세스가 가능하며, sort 시 pair<> 의 first 값의로 기본 정렬한다. 라고 답변을 했습니다.

답변을 들으시더니 면접관님께서 "정렬된" 이라는 키워드를 중점으로 다시 생각해보라고 하셨는데

답변을 못했습니다.

어떤의도로 문제를 내신지 알 수 있을까요?

C++

답변 1

0

Rookiss

조금 질문이 애매하긴 하네요.
정확한 의도는 질문자만 알겠지만, '정렬된'을 강조하는 것을 보니
이미 정렬된 상태의 vector vs map를 비교하라는 의도 같습니다.

탐색:
map은 레드블랙트리 기반이니 임의의 자료를 찾을 때 O(logN)
일반 vector라면 임의의 자료를 찾을 때 O(N)이겠지만
이미 정렬되어 있는 상태라면 이진 검색을 통해 O(logN)이 가능합니다.
map은 노드 기반인 반면 vector는 인접한 배열을 서칭하게 되니,
자료가 100% 더 이상 추가되지 않는다면
map보다 정렬된 vector을 이용하는 것도 괜찮을 수 있겠죠.

추가/삭제:
하지만 결국 데이터가 삭제 되거나 추가 되어야 한다면,
노드 기반의 map은 여전히 O(logN)에 빠른 처리가 가능하지만
vector의 경우 중간 삽입/삭제가 느리기 O(N)+@ 때문에 문제가 될 수 있습니다.

정렬된 vector vs map을 비교하라는 문제에서
sort 시 pair<> 의 first 값의로 기본 정렬한다
위 답변이 질문자 의도와는 달라 조금 아쉬웠을 것 같네요.

visualstudio에서 파일분할관리실습시 설정 문의를 드립니다.

0

561

1

정렬함수 좀 더 확실하게 이해 할 방법이 있을까요?

0

456

1

strcpy() 구현 관련 질문

0

543

1

빌드(망치)를 누르니 이런 오류가 떴습니다. 어떻게 해야 하나요?

0

477

1

클래스 타입의 포인터 질문합니다

0

560

1

입력값을 enum 값에 넣어주는거 이제 막혔나요?

0

504

1

템플릿 특수화 관련 질문

0

392

1

포인터 관련 질문합니다!

0

275

1

Unable to start assembler. Check your settings.

0

851

2

cpu선택

0

552

1

포인터 질문이 있습니다

0

335

1

20:35 에서 구조체 크기에 대한 질문입니다!

0

592

1

iterator 삭제관련

0

419

1

함수 호출을 디스어셈블러로 분석하다가 궁금점이 생겼습니다!

0

316

1

15 분 45초 대 질문

0

319

0

스택 프레임 질문합니다!

2

316

1

오른값 참조 in 게임

0

394

0

동적할당 질문이 있습니다

0

460

1

안녕하세요 메모리에 대해 질문드립니다.

0

314

1

함수객체 의 매개변수

0

370

1

복사생성자

0

441

1

main이나 endl 부분이 주황색으로 표시된건 어떻게 하나요

0

431

1

포인터 실습 강의를 보고 궁금한게 있습니다.

0

360

1

스택 오버플로우

2

804

1