inflearn logo
강의

Course

Instructor

[MMORPG Game Development with C++ and Unreal Series] Part 1: Introduction to C++ Programming

vector #3

iterator 삭제관련

406

geohwakim2456

1 asked

0

2023-01-19 17 58 30.png

iterator 삭제 관련 질문입니다.

  1. for 문에서 v.erase(it)를 이용하면 해당 공간에 iterator 정보가 사라져 다음 순번때 에러가 발생합니다.

  2. for문을 사용하지 않고 erase를 동일하게 2번 적용할 경우 이떄는 정상적으로 작동합니다.

    v.erase(v.begin() +2);

    v.erase(v.begin() +3);

두 가지 방식이 삭제하는 방식이 같다고 생각되는데 무슨 차이가 있는지 궁금합니다.

 

감사합니다.

C++

Answer 1

0

Rookiss

2에서 문제가 없는 이유는 말 그대로 v.begin()을 기반으로 다시 iterator를 구하니까 그런 것입니다.
1에서는 기존 it을 그대로 재사용하고 있고요.
v.erase(it)을 하면 지정한 위치에 있는 데이터가 삭제되고,
벡터 특성상 모든 데이터가 한 칸씩 앞당겨 지기 때문에 원래 우리가 의도한
[다음 데이터]를 가리키는 상황이 아닙니다.
이게 마지막 데이터라면 특히나 문제가 될 수 있습니다 (접근하면 안 되는 영역에 접근)

 

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

0

541

1

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

0

441

1

strcpy() 구현 관련 질문

0

513

1

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

0

452

1

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

0

546

1

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

0

497

1

템플릿 특수화 관련 질문

0

384

1

포인터 관련 질문합니다!

0

263

1

Unable to start assembler. Check your settings.

0

829

2

cpu선택

0

539

1

포인터 질문이 있습니다

0

322

1

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

0

584

1

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

0

310

1

15 분 45초 대 질문

0

308

0

스택 프레임 질문합니다!

2

306

1

오른값 참조 in 게임

0

384

0

동적할당 질문이 있습니다

0

449

1

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

0

304

1

함수객체 의 매개변수

0

358

1

복사생성자

0

434

1

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

0

419

1

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

0

353

1

스택 오버플로우

2

790

1

반환타입, 매개변수타입

0

296

1