벡터 :: 시작과 비교시 반복기가 충돌 함

JNevens

벡터를 역순으로 반복하려고합니다. typedef를 사용하여 반복자를 "만들었습니다".

typedef std::vector<Object*>::iterator Cursor;

내 문제는이 함수가 벡터의 시작에 도달하면 충돌하는 것 같습니다. 다음 코드가 있습니다.

void InsertFunc(Cursor& it, Object& o) {
     vec_.insert(it, o);
     --it;
     for (; it >= vec_.begin(); --it) {
         if ((*it)->type() == Object::SomeType) {
             do_something
         } else {
             do_something_else
         }
     }
std::cout << "Insertion succes!" << std::endl;
}

이미 테스트 해 보았고 함수가 벡터의 시작 부분에 도달했는지 확인했지만 프로그램이 종료되고 "Insertion succes!"이라는 메시지가 표시됩니다. 인쇄되지 않습니다. 왜 그런지 아세요?

궤도의 가벼움 레이스

insert재배치 증가로 인해 요소가 메모리에서 이동되어야하는 경우 반복기가에 의해 잠재적으로 무효화됩니다 .

삽입 호출 자체에서 새롭고 유효한 반복기를 얻을 수 있습니다.

it = vec_.insert(it, o);

그리고 멀리 가십시오.

다음 줄 --it은 새 요소가 이미 있는 경우 오류를 발생시킵니다 begin(). 당신은 방금 시작을 지나서 반복했습니다. 솔직히 말해서이 함수의 논리를 완전히 다시 살펴 보겠습니다.


- 반복자 무효화 규칙

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

LibreOffice writer가 시작시 충돌 함

분류에서Dev

시작시 IntentService가 충돌 함

분류에서Dev

시작과 끝없이 벡터 반복

분류에서Dev

데이터를 다시로드 할 때 Tableview가 충돌 함

분류에서Dev

null 포인터 예외로 시작시 Android 앱이 충돌 함

분류에서Dev

Ubuntu에서 시작시 Wine에서 Firefox가 충돌 함

분류에서Dev

Ubuntu에서 시작시 Wine에서 Firefox가 충돌 함

분류에서Dev

서명되지 않은 ipa가 시작시 충돌 함

분류에서Dev

시작시 Microsoft Office 2016 Word가 충돌 함

분류에서Dev

VBA가 Excel과 충돌 함

분류에서Dev

파일 포함시 충돌

분류에서Dev

iOS 시뮬레이터가 시작시 충돌합니다.

분류에서Dev

오른쪽 클릭 또는 시작시 Windows 탐색기가 충돌 함

분류에서Dev

Android : 데이터베이스로 Listview 채우기, 충돌 및 표시 안 함

분류에서Dev

표시 할 logcat을 읽을 때 Android 기기가 충돌 함

분류에서Dev

시작이 완료되기 전에 엔터프라이즈 분산 iOS 앱이 일관성없이 충돌 함

분류에서Dev

일시 중단에서 다시 시작할 때 Ubuntu 18.04가 충돌 함

분류에서Dev

서랍 목록 어레이 어댑터가 앱과 충돌 함

분류에서Dev

비동기 작업이 예기치 않게 충돌 함

분류에서Dev

Spritekit-터치가 시작될 때 충돌 접근 방식

분류에서Dev

변수 감시시 Visual Studio 2005가 충돌 함

분류에서Dev

몇 번의 반복 후에 충돌하는 정수 해시 함수

분류에서Dev

ZMQ가 aiohttp 웹 서비스에서 "무작위로"충돌 함

분류에서Dev

FirebaseApp.configure ()가 시작시 앱 충돌

분류에서Dev

앱 시작시 가끔 충돌

분류에서Dev

비디오 재생시 Ubuntu 18.04 LTS의 Xorg가 자주 충돌 함

분류에서Dev

반환시 사용자 지정 입력이 충돌 함

분류에서Dev

그림을 작업 표시 줄로 끌면 Explorer.exe가 충돌 함

분류에서Dev

std :: exception 발생시 Visual Studio 2013 IDE가 충돌 함

Related 관련 기사

  1. 1

    LibreOffice writer가 시작시 충돌 함

  2. 2

    시작시 IntentService가 충돌 함

  3. 3

    시작과 끝없이 벡터 반복

  4. 4

    데이터를 다시로드 할 때 Tableview가 충돌 함

  5. 5

    null 포인터 예외로 시작시 Android 앱이 충돌 함

  6. 6

    Ubuntu에서 시작시 Wine에서 Firefox가 충돌 함

  7. 7

    Ubuntu에서 시작시 Wine에서 Firefox가 충돌 함

  8. 8

    서명되지 않은 ipa가 시작시 충돌 함

  9. 9

    시작시 Microsoft Office 2016 Word가 충돌 함

  10. 10

    VBA가 Excel과 충돌 함

  11. 11

    파일 포함시 충돌

  12. 12

    iOS 시뮬레이터가 시작시 충돌합니다.

  13. 13

    오른쪽 클릭 또는 시작시 Windows 탐색기가 충돌 함

  14. 14

    Android : 데이터베이스로 Listview 채우기, 충돌 및 표시 안 함

  15. 15

    표시 할 logcat을 읽을 때 Android 기기가 충돌 함

  16. 16

    시작이 완료되기 전에 엔터프라이즈 분산 iOS 앱이 일관성없이 충돌 함

  17. 17

    일시 중단에서 다시 시작할 때 Ubuntu 18.04가 충돌 함

  18. 18

    서랍 목록 어레이 어댑터가 앱과 충돌 함

  19. 19

    비동기 작업이 예기치 않게 충돌 함

  20. 20

    Spritekit-터치가 시작될 때 충돌 접근 방식

  21. 21

    변수 감시시 Visual Studio 2005가 충돌 함

  22. 22

    몇 번의 반복 후에 충돌하는 정수 해시 함수

  23. 23

    ZMQ가 aiohttp 웹 서비스에서 "무작위로"충돌 함

  24. 24

    FirebaseApp.configure ()가 시작시 앱 충돌

  25. 25

    앱 시작시 가끔 충돌

  26. 26

    비디오 재생시 Ubuntu 18.04 LTS의 Xorg가 자주 충돌 함

  27. 27

    반환시 사용자 지정 입력이 충돌 함

  28. 28

    그림을 작업 표시 줄로 끌면 Explorer.exe가 충돌 함

  29. 29

    std :: exception 발생시 Visual Studio 2013 IDE가 충돌 함

뜨겁다태그

보관