list의 insert, erase에서 매개변수는 왜 iterator를 복사형으로 받나요?
303
3 câu hỏi đã được viết
요약
1. 왜 참조형을 사용하지 않는지 궁금합니다.
2. 일반 참조형을 사용했을때는 왜 컴파일 오류가 발생하는지, const 참조형을 사용하면 컴파일 오류가 사라지는지 궁금합니다.
const iterator& 또는 iterator&를 사용하지 않은 이유를 알고싶습니다.
내부에서 iterator의 데이터인 _node의 값이 변경되어야 하기 때문에 const를 사용하지 않는건가? 싶어서
const를 제외해보았더니,
그냥 참조 &의 경우 li.end()에서 반환하는 iterarotr값을 인자로 받지를 못하는것 같습니다.
이것은 왜 그런지 궁금합니다.
Câu trả lời 1
0
일단 iterator는 사실상 포인터를 래핑한 개념이라
굳이 참조로 할 이유가 없습니다.
복사를 해도 복사 이용이 딱히 없구요.
그리고 질문주신 빌드 에러는 iterator의 문제가 아니라
l-value, r-value에 대한 이해도 문제입니다. (왼값, 오른값 참조)
참조는 실체의 주소를 '참조'하는 개념에 가까운데
오른값은 임시로 할당된 주소이기 때문에
이를 참조하는 것은 이치에 맞지 않고 경우에 따라 위험할 수 있습니다.
결과적으로 C++ 문법에서 아예 막아놓은 것이고
const & 참조 값의 경우 애당초 그 값을 수정하지 않겠다는 약속을 했기 때문에,
오른값을 넘겨도 (즉 임시값을 넘겨도) 문제가 발생하지 않습니다.
이 부분은 C++문법이 그런 것이라, 조금 더 연구를 해보시면 되겠습니다.
프론트엔드 이력서 관련 질문
1
13
2
포트폴리오에 대한 질문이 있습니다!
1
25
2
회사마다의 JD 자격 요건에 대해서는 어떻게 접근해야 좋나요?
0
33
2
스킬에 대해
1
60
2
건강문제, 공백과 개인서비스에 대한 질문입니다.
1
70
2
비전공자 전공 필기 준비 문의
0
56
2
금공 준비하려고 하는데 코테 어떻게 준비할까요?
0
54
2
Replace함수 질문
0
100
2
A*, 다익스트라, Bfs차이 질문
0
183
2
closed list를 비교하는 부분이 궁금합니다.
0
126
1
부모가 2개 이상일경우 질문
0
187
2
sort함수 쓰려면 알고르즘헤더를 추가해야하는거 아닌가요?
0
194
2
빅오 표기법 2단계
0
337
1
Pop()함수에서 레퍼런스를 반환하지 않는 이유가 궁금합니다
0
402
3
iterator의 begin, end, insert, erase함수에서 iterator를 반환할 때 일어나는 현상이 궁금합니다
0
237
1
언리얼 part.4 는 안나오나요?
0
453
1
재귀함수 질문
0
477
1
클레스 템플릿 헤더파일 분리시 주의 사항이 있나요?
0
575
3
Pos operator< 어디서 사용하나요?
0
531
2
Disjoint Set 클래스 수정해도 괜찮나요?
0
476
1
A*알고리즘 작성과정에서 블록 안에서 초기화를 한 이유가 궁금합니다.
0
605
1
1강에서의 List와 자료구조편에서의 List의 차이가 뭘까요?
0
609
1
이진 탐색 트리 삭제 질문
0
720
1
해당 문제 유형을 수학적으로 표현 가능할까요?
0
523
1

