题目
分析
这道题主要是考验STL中集合(set
)的基本操作,特别是其中的lower_bound
,以及迭代子的操作。
lower_bound
lower_bound
是C++ STL中的一个重要函数,它用于在有序容器(如set
)中查找第一个大于或等于指定值的元素。但需要特别注意的是,它不是返回一个值,而是返回这个元素的迭代子(iterator
,可以理解为一个指针,并进而可以通过*it
来获得元素的值)。
迭代子的操作
既然返回的迭代子是一个指针,就可以对它进行解引用(*it
)操作以及常规的++/--
操作。
在代码中,我们还看到两种删除元素的方法。一种是直接删除迭代子,于是就直接删除了这个元素;另一种是通过值来删除,这时还会进行一次查找,会稍微慢一些。这两种方式是等效的。不过需要特别注意,用迭代子删除元素虽然快,但可能有副作用,特别是在迭代子有了变化的时候,所以用的时候要特别小心。
答案
思考
(略)