2014-06-10 1 views
3

std::list 또는 std::forward_list 항목을 할당하면 해당 항목이 삭제 될 때까지 동일한 메모리 위치 (주소)에 남아있게됩니까? 물론 목록 자체가 복사되는 경우는 제외됩니다. 당신이 요소를 파괴하지 않는 모든 기능 (등 insert, emplace, push_back를, ...)의 설명서를 보면std :: list는 항목이 다른 메모리 위치로 이동되지 않도록 보장합니까?

+0

이동할 수 있으면 포인터에 대한 포인터가 모두 무효화되지 않습니까? 그것은 일어날 수있는 것처럼 들리지 않습니다. –

+0

@TrippKinetics : 정확히 말하자면. 나는 항상'std :: list' 인터페이스를 통해 아이템에 접근하는 것과는 대조적으로 노드에 대한 직접 포인터를 저장하는 것이 안전한지 알고 싶다. –

+0

[이 질문에 대한] 대답 (http://stackoverflow.com/q/16027044/3549027)은'insert'와'remove'가 반복자를 무효화하지 않을 것이라는 것을 확인했습니다. 그러나 이것은 질문에 대한 완전한 답이 아닙니다. IMO ... – dlf

답변

6

, 당신은 그들이 이 "참조가 무효화 없다"고 메모를 볼 것이다입니다. 이는 물어 보는 것과 같습니다 (동일한 메모리 위치에있는 물체). 그래, 네.

관련 문제