2013-03-23 99 views
3

说我有一组,像这样的:查找最近的元素

my_set = {"aaron", "cathy", "john", "stewie", "xavier"}; 

说我想要一个像这样的功能:

FindFirst(my_set, "a")  // returns an iterator pointing to "aaron" 
FindFirst(my_set, "aaron") // returns an iterator pointing to "aaron" 
FindFirst(my_set, "bill") // returns an iterator pointing to "cathy" 
FindFirst(my_set, "zzzzz") // returns past-the-end iterator 

基本上,它需要一个值,并返回一个迭代器或者是该元素,或者是它之后的第一个元素(如果所提供的值将在该集合结束之后存在,则选择过去结束的迭代器)。

像这样的函数是否存在于标准库中,或者我将不得不自己编写一个函数?

回答

6

set::lower_bound是您正在寻找的功能。

+0

很酷。我浏览了文档,注意到其中一个,我猜想我会认为它会返回集合中的第一个元素。我猜这是没有意义的,因为'begin'已经这样做了,不是。 – Wug 2013-03-23 03:08:58

+0

我也无法接受12分钟的答案。 – Wug 2013-03-23 03:09:35

+0

它无法在每种情况下都返回集合的第一个元素 - 它将第一个元素的迭代器返回给第一个元素*,而不是传入的元素。 – nneonneo 2013-03-23 03:09:40