요소가 순서가 벗어나는 C++의 목록을 구현할 계획입니다. 어떤 종류의 랜덤 액세스 (필자는 주기적으로 목록을 스윕해야 함)가 필요하다고 생각하지 않으며 항목의 순서도 중요하지 않습니다.C++ 반복기의 수명 및 유효 기간은 어떻게됩니까?
그래서 나는 std::list<Thing*> with this->position = insert(lst.end(), thing)
의 트릭을해야한다고 생각했습니다. Thing 클래스가 각 인스턴스의 위치를 기억하여 나중에 쉽게 할 수 있도록하고 싶습니다. lst.erase(this->position)
일정 시간.
그러나 나는 아직 C++ STL 컨테이너에 익숙하지 않으며 오랜 시간 동안 반복자를 유지하는 것이 안전한지 잘 모르겠습니다. 특히 삽입하기 전에 삭제 된 다른 요소가있을 것이라는 점을 감안할 때 특히 그렇습니다.
좋은 대답은 어떤 원인으로 인해 벡터를 재 할당 할 수 있는지 파악하는 데 도움이됩니다. (요소를 삽입하는 것이 명백하지만 다른 요소가 있습니까?) – Malabarba
벡터의 수정 (삽입 및 제거 모두)은 반복기를 재 할당하고 무효화 할 수 있습니다. 구현 여부에 관계없이 구현 정의됩니다. 따라서 어떤 방식 으로든 벡터를 수정하면 항상 기존의 모든 반복기가 무효화된다고 가정하면 가장 좋습니다. – Miral