2013-03-23 196 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