public member function
<set>

std::set::find

iterator find (const value_type& val) const;
const_iterator find (const value_type& val) const;iterator       find (const value_type& val);
獲取指向元素的迭代器
在容器中搜索與 val 等效的元素,如果找到則返回指向它的迭代器,否則返回指向 set::end 的迭代器。

set 的兩個元素被認為是等效的,如果容器的 比較物件 返回false自反地(即,無論元素以何種順序作為引數傳遞)。

引數

val
要搜尋的值。
成員型別value_type是容器中元素的型別,在 set 中定義為其第一個模板引數的別名(T).

返回值

如果找到 val,則指向該元素的迭代器,否則為 set::end

成員型別iteratorconst_iterator是指向元素的 雙向迭代器 型別。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// set::find
#include <iostream>
#include <set>

int main ()
{
  std::set<int> myset;
  std::set<int>::iterator it;

  // set some initial values:
  for (int i=1; i<=5; i++) myset.insert(i*10);    // set: 10 20 30 40 50

  it=myset.find(20);
  myset.erase (it);
  myset.erase (myset.find(40));

  std::cout << "myset contains:";
  for (it=myset.begin(); it!=myset.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

輸出
myset contains: 10 30 50


複雜度

size 的對數複雜度。

迭代器有效性

沒有變化。

資料競爭

訪問容器(const 和非 const 版本都不會修改容器)。
併發訪問set的元素是安全的。

異常安全

強保證:如果丟擲異常,容器沒有發生變化。

另見