inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

list #2

list #2강의 18:48~ 중간 삽입/삭제와 임의접근의 모순

해결된 질문

393

디네로

작성한 질문수 4

0

안녕하십니까 강사님 항상 고생하십니다.

list에 대해서 복습을 하던 중 의문점이 생겨 질문 드립니다.

 

해당 강의의 중간 삽입/삭제와 임의접근의 모순에 대해선 내용을 이해 했습니다.

 

여기서 생기는 의문점이 그렇다면 remove()는 왜 구현해 놨을까? 입니다.

 

remove()는 동작할 때 리스트항목을 모두 순회하여 해당 값을 지우는 걸로 알고 있습니다.

이것 또한 지우는 것 자체는 빠르겠으나 그전에 하는 순회는 리스트의 크기가 커질수록 아주 느릴텐데, 그 위치를 기억하고 있던 것도 아니고 왜그런 remove()를 임의접근처럼 막아 놓지 않았는지 궁금합니다!

c++ list remvoe()

답변 1

0

Rookiss

ㅋㅋㅋ 글쎄요 재밌는 질문이네요.
정확한 답은 C++ 표준 위원회에서만 알테니,
저도 뭐라 답변을 드릴 수가 없지만
그냥 삭제와 다르게 list의 remove는 정말 해당 값을 가진 애들을
다! 지워주기 때문에 1개만 지우는 상황과는 다르게
그래도 조금 더 효율성이 좋으니 그렇지 않을까? 싶네요

0

디네로

헉... 주말에도 답변을 해 주시다니 감사합니다

오호 그렇군요. 말씀하신 것 처럼 하나만 지우는 것이 아닌 해당 값을 모두 지우기 위한 경우를 위한 함수라고 생각하면 납득이 갑니다.
값을 하나만 지워야하는 경우는 그 값을 하나만 기억해주면 되지만, 다수일 경우 일일이 그에 해당하는 기억 변수를 선언해주는 것도 비효율적이니 느리더라도 remove함수로 빼서 관리하는 것이 효율적이겠네요!
또 만약 그런 경우가 빈번하게 일어난다면 프로그래머가 직접 그 때마다 remove()를 구현 하는 것 보다 처음부터 list에 구현 해 놓는 것이 또 효율적일 수 도 있겠군요!

감사합니다! 덕분에 가려웠던 부분이 해결된 것 같습니다.

소스코드와 관련하여 질문드립니다

0

68

1

map 컨테이너의 emplace 함수에 대해

0

110

2

시작이 안되네요...!

0

95

2

EAX 명령어 실행 시 RAX의 상위 32비트가 초기화 되는 이유

0

125

1

리틀 엔디안 장점 질문합니다.

0

131

1

메모리 창에 주소를 넣었는데 영어 꺠짐

0

124

1

타입변환#2 build시 knight 인접 stack이 침범당했다는 error가 발생합니다.

0

94

2

map #1 8분 58초 맵은 레드블랙트리로 이루어진 것 같습니다.

1

138

2

hello world 부터 오류 ㅠㅜ

0

187

1

지역변수가 스택? 레지스터

0

127

2

마지막 문제 질문드립니다.

0

162

2

메모리창이 비활성화됩니다.

0

98

1

이중포인터 강좌 부분 질문있습니다.

0

145

1

2를 더하는 이유

0

133

1

메모리 주소 창 엔디안 질문 드립니다. 인프런 봇 답변도 괜찮습니다

1

109

1

해당 코드는 왜 오류가 날까요?

0

154

1

마지막 문제 질문 있습니다.

0

117

1

강의 마지막부분에 질문이 있습니다.

0

190

2

Field초기화

0

140

1

virtual과 override 차이

0

314

2

3:30 참조자 리턴

0

166

1

map 찾기

0

157

1

프로그램 질문드려요

0

258

1

캐스팅 질문

0

136

1