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的元素是安全的。

异常安全

强保证:如果抛出异常,容器没有发生变化。

另见