获取std :: set中的last / new添加元素

时间:2010-03-08 18:33:18

标签: c++ stl

你可以在std :: set中获取最后一个或新添加的元素吗?例如,假设循环运行以收集元素以填充std :: set。

如果在第一次运行时该组是,

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

并且,在第二次运行时,该集变为

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

您如何检查'C'是否是添加的新元素?

4 个答案:

答案 0 :(得分:12)

set::insert returns an iterator到新插入的项目。如果您对该项目感兴趣,请继续使用该迭代器。

答案 1 :(得分:5)

如果您仍有旧套装,请计算它们之间的set_difference

否则,你不能。 std::set不保留有关何时插入元素的任何信息。如果您需要保留该信息,请使用std::vector(并仅按push_back插入元素)。

答案 2 :(得分:0)

集与列表和向量不同,因为它们是无序的。将对象添加到集合中会将其放在集合中的某个位置,但不一定在最后。

有关集合存储信息的方式的详细信息,请参阅cplusplus/set

答案 3 :(得分:0)

恕我直言,最简单的方法是将最后插入的值存储在变量中,请参阅“Memento”设计模式。 另一种方法是使用另一种数据结构 - 可能是某种堆栈。