list #2강의 18:48~ 중간 삽입/삭제와 임의접근의 모순
안녕하십니까 강사님 항상 고생하십니다.
list에 대해서 복습을 하던 중 의문점이 생겨 질문 드립니다.
해당 강의의 중간 삽입/삭제와 임의접근의 모순에 대해선 내용을 이해 했습니다.
여기서 생기는 의문점이 그렇다면 remove()는 왜 구현해 놨을까? 입니다.
remove()는 동작할 때 리스트항목을 모두 순회하여 해당 값을 지우는 걸로 알고 있습니다.
이것 또한 지우는 것 자체는 빠르겠으나 그전에 하는 순회는 리스트의 크기가 커질수록 아주 느릴텐데, 그 위치를 기억하고 있던 것도 아니고 왜그런 remove()를 임의접근처럼 막아 놓지 않았는지 궁금합니다!
답변 1
0
ㅋㅋㅋ 글쎄요 재밌는 질문이네요.
정확한 답은 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





