auto & m = queue.top();
하여 상위 값을 얻으면 pop()
(비주얼 스튜디오 2015)pop()을 호출 한 후 top()의 반환 값이 변경되는 이유는 무엇입니까?
priority_queue<int> queue;
queue.push(1);
queue.push(2);
queue.push(3);
const int & m = queue.top();
cout << m << endl; // 3
queue.pop();
cout << m << endl; // 2
queue.pop();
cout << m << endl; // 1
호출 후 priority_queue
의 top()
변경하여 반환 CONST 참조는 다음과 같은 출력 3 2 1
이다.
위로 가기 값이 auto m = queue.top();
인 경우 출력은 3 3 3
입니다.
어떤 메커니즘이 뒤에 있습니까?
정의되지 않은 동작으로, 더 이상 존재하지 않는 요소에 대한 참조가 생성되었습니다. –
이것이 왜 downvoted인지 확실하지 않은 것 같습니다. 공정한 질문처럼 보입니다. –