2012-10-20 2 views
2

std::list 안에있는 요소들의 순서가 순서대로 유지되는 것이 보장됩니까 (물론 정렬이나 무언가가 발생하지 않는 한)?표준 : : 목록 순서가 보장됩니까?

또한 잠재적 인 정의되지 않은 동작이있을 수 있습니까?

std::deque 등과 같은 컨테이너는 주문 안전하지만, std::deque은 이중 연결이 아니라는 인상하에있었습니다.

+3

링크 된 목록의 std :: list 구현이 그 순서를 유지하지 않는다고 가정하게 만드는 이유는 무엇입니까? – DavidO

+0

@DavidO - Nothing; 그것은 단지 생각이었습니다. 나는 그들이 그럴 줄 알았지 만, 다른 사람들이 내가 알지 못하는 것을 숨기고있는 뭔가가 있습니다. – Qix

+0

글쎄,'std :: vector'와'std :: deque' (그리고 좋은 옛날 배열)처럼 그것은 시퀀스 컨테이너입니다. 라이브러리가 무작위로 요소를 재정렬 할 수 있다면 그 감각을 거의 잃을 것입니다. –

답변

4

예, 주문은 std::list으로 보장됩니다. UB에서는 어떤 일이 일어날 수 있기 때문에 std :: list의 순서를 뒤섞을 수 있습니다 (생각할 것 같지는 않지만).

짧은 대답은 목록이 순서대로 맞지 않는다면 생각해야 할 가장 큰 이유는 프로그램의 버그입니다.

+3

단지 이유가 있습니다. – DavidO

+0

쿨, 나는 많이 생각했습니다. 그냥 확인하고 싶었어요. 나는 그것에 대해 인터넷 경고에 아무것도 찾을 수 없지만, 그것이 일어날 수 없다는 것을 의미하지는 않습니다. – Qix

+0

아마 내가 일반적으로 버그가 아닌 * 논리 *에 버그가 있어야합니다. – john

관련 문제