중간 삽입/삭제 질문
264
작성한 질문수 11
1) 중간 삽입/삭제가 빠르다 라고 하셨는데 단 해당 위치를 알고 있다는 가정하에 빠르다 라고 하면 올바른 설명이 되나요?
2) erase의 경우 iterator로 위치를 알고 있어야 하는데 remove의 경우 data값만 지정해주면 해당 값이 삭제된다고 설명해주셨습니다. remove의 경우 삭제하고자 하는 값의 위치 정보를 모르는데 삭제가 가능하다는 것은 결국 list를 전부 돌면서 해당 data값을 찾기 때문에 느리다 라고 이해하면 될까요?
3) remove는 느리더라도 원하는 값을 삭제할 수 있다는 장점이 있는데 erase는 iterator로 해당 위치를 알고 있어야 합니다. 그렇다면 추후에 성능을 고려해서 코드를 작성할 경우 erase를 사용 할 계획이라면 다루고자 하는 데이터의 모든 위치를 iterator로 기억하도록 해야 하는건가요? 현업에서 list를 사용한다면 erase를 어떻게 사용하는지 간단한 예시를 알려주시면 좋을 것 같습니다.
답변 1
1
1) 중간 삽입/삭제가 빠르다 라고 하셨는데 단 해당 위치를 알고 있다는 가정하에 빠르다 라고 하면 올바른 설명이 되나요?
그렇습니다.
2) erase의 경우 iterator로 위치를 알고 있어야 하는데 remove의 경우 data값만 지정해주면 해당 값이 삭제된다고 설명해주셨습니다. remove의 경우 삭제하고자 하는 값의 위치 정보를 모르는데 삭제가 가능하다는 것은 결국 list를 전부 돌면서 해당 data값을 찾기 때문에 느리다 라고 이해하면 될까요?
그렇습니다.
실제 코드를 봐도 매우 느리게 생겼쬬.
3) remove는 느리더라도 원하는 값을 삭제할 수 있다는 장점이 있는데 erase는 iterator로 해당 위치를 알고 있어야 합니다. 그렇다면 추후에 성능을 고려해서 코드를 작성할 경우 erase를 사용 할 계획이라면 다루고자 하는 데이터의 모든 위치를 iterator로 기억하도록 해야 하는건가요? 현업에서 list를 사용한다면 erase를 어떻게 사용하는지 간단한 예시를 알려주시면 좋을 것 같습니다.
사실 list는 사용 빈도가 높진 않고 대부분 vector로 갑니다.
[iterator를 기억하고 있으면 중간 삽입 삭제가 빠른게 유용한 경우]에만
아주 가끔 list를 사용하는 사례를 본 적이 있는데요.
실행되어야 하는 일감Job 목록을 JobList에 관리한다고 가정해봅시다.
Queue처럼 선입선출로 먼저 등록된 일감이 실행되는 상황인데,
아직 일감이 실행되지 않았으면 취소도 가능해야 한다는 사항이 있다면 어떻게 할까요?
Queue에서 먼저 꺼낸 다음 취소되었는지 여부를 확인해서 무시할 수도 있겠지만,
또 다른 대안은 List로 관리한 다음 iterator를 기억했다가 바로 제거하는 방법이 있습니다.
물론 이 경우 정상적으로 실행되었으면 iterator를 더 이상 사용하지 않게 버리는 작업도
같이 해줘야 되니 살짝 번거롭지만, 뭐 아무튼 이런 식으로 사용한 예를 본 적은 있었네요.
visualstudio에서 파일분할관리실습시 설정 문의를 드립니다.
0
561
1
정렬함수 좀 더 확실하게 이해 할 방법이 있을까요?
0
456
1
strcpy() 구현 관련 질문
0
546
1
빌드(망치)를 누르니 이런 오류가 떴습니다. 어떻게 해야 하나요?
0
478
1
클래스 타입의 포인터 질문합니다
0
562
1
입력값을 enum 값에 넣어주는거 이제 막혔나요?
0
505
1
템플릿 특수화 관련 질문
0
393
1
포인터 관련 질문합니다!
0
276
1
Unable to start assembler. Check your settings.
0
852
2
cpu선택
0
552
1
포인터 질문이 있습니다
0
336
1
20:35 에서 구조체 크기에 대한 질문입니다!
0
593
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
442
1
main이나 endl 부분이 주황색으로 표시된건 어떻게 하나요
0
431
1
포인터 실습 강의를 보고 궁금한게 있습니다.
0
360
1
스택 오버플로우
2
804
1





