你可以在std :: set中获取最后一个或新添加的元素吗?例如,假设循环运行以收集元素以填充std :: set。
如果在第一次运行时该组是,
[0] "A"
[1] "B"
[2] "D"
并且,在第二次运行时,该集变为
[0] "A"
[1] "B"
[2] "C"
[3] "D"
您如何检查'C'是否是添加的新元素?
答案 0 :(得分:12)
set::insert
returns an iterator到新插入的项目。如果您对该项目感兴趣,请继续使用该迭代器。
答案 1 :(得分:5)
如果您仍有旧套装,请计算它们之间的set_difference
。
否则,你不能。 std::set
不保留有关何时插入元素的任何信息。如果您需要保留该信息,请使用std::vector
(并仅按push_back
插入元素)。
答案 2 :(得分:0)
集与列表和向量不同,因为它们是无序的。将对象添加到集合中会将其放在集合中的某个位置,但不一定在最后。
有关集合存储信息的方式的详细信息,请参阅cplusplus/set
答案 3 :(得分:0)
恕我直言,最简单的方法是将最后插入的值存储在变量中,请参阅“Memento”设计模式。 另一种方法是使用另一种数据结构 - 可能是某种堆栈。