2010-03-08 6 views
1

std :: set에서 마지막 또는 새로 추가 된 요소를 가져올 수 있습니까? 예를 들어 std :: set을 채우기 위해 요소를 수집하기 위해 루프가 실행되는 경우입니다. std :: set에서 마지막/새로 추가 된 요소 가져 오기

[0] "A" 
[1] "B" 
[2] "D" 

하고, 두 번째 실행에, 세트가

[0] "A" 
[1] "B" 
[2] "C" 
[3] "D" 

이되고, 세트가 된 첫 번째 실행에 경우 'C'가 있던 새로운 요소 인 경우

어떻게 확인할 것 덧붙였다?

답변

5

아직 이전 세트가있는 경우 그 사이에 set_difference을 계산하십시오.

그렇지 않으면 불가능합니다. std::set에는 요소 삽입시기에 대한 정보가 없습니다. 해당 정보를 유지해야하는 경우 std::vector을 사용하고 (요소를 push_back로 삽입하십시오).

0

집합은 목록 및 벡터와 순서가 다릅니다. 세트에 오브젝트를 추가하면 세트의 어딘가에 놓이게됩니다.하지만 반드시 마지막에 놓을 필요는 없습니다.

는 세트의 정보를 새로 삽입 된 항목

0

가장 쉬운 방법은 변수에 마지막으로 삽입 된 값을 저장하는 것입니다. "Memento"디자인 패턴을 참조하십시오. 또 다른 방법은 다른 데이터 구조를 사용하는 것입니다.