C++ set find() 函数

C++ set find() 函数

C++ set 中的 find() 函数用于查找给定 val 的 元素 。如果找到了该元素,则返回指向该元素的迭代器;否则,返回指向集合末尾的迭代器,即 set::end()。

语法

         iterator find (const value_type& val) const;                  // until C++ 11

   const_iterator find (const value_type& val) const;              //since C++ 11
         iterator       find (const value_type& val);                    //since C++ 11

参数

val :指定要在集合容器中搜索的值。

返回值

如果找到了元素,则返回指向该元素的迭代器,否则返回指向集合末尾的迭代器,即set::end()。

复杂度

对数级别。

迭代器有效性

没有变化。

数据竞争

访问了容器(无论是const还是非const版本都不会修改容器)。

没有访问到映射值:同时访问和修改元素是安全的。

异常安全性

如果抛出异常,则容器没有变化。

示例1

让我们来看一个简单的示例,找到给定键值的元素:

#include <iostream>
#include <set>

using namespace std;

int main(void) {
   set<int> m = {100,200,300,400};

   auto it = m.find(300);

   cout << "Iterator points to " << *it << endl;

   return 0;
}

输出结果:

Iterator points to 300

示例2

让我们来看一个简单的示例来查找元素:

#include <iostream>
#include <set>

using namespace std;

int main(void) {
   set<char> m = {'a', 'b', 'c', 'd'};


    auto it = m.find('e');

    if ( it == m.end() ) {
    // not found
     cout<<"Element not found";
    } 
    else {
        // found
        cout << "Iterator points to " << *it<< endl;
    }

   return 0;
}

输出:

Element not found

在上面的示例中,find()函数在集合m中查找键值e,如果在集合中未找到,则返回一个未找到的消息;否则,它将显示该集合。

示例3

让我们看一个简单的示例:

#include <iostream>
#include <set>

using namespace std;

int main()
{
    char n;
    set<char> example = {'a','b','c','d','e'};

    cout<<"Enter the element which you want to search: ";
    cin>>n;

    auto search = example.find(n);
    if (search != example.end()) {
        cout << n<<" found and the value is " << *search << '\n';
    } else {
        cout << n<<" not found\n";
    }
}

输出:

Enter the element which you want to search: b
b found and the value is b

在上面的示例中,find()函数用于根据用户给定的值查找元素。

示例4

让我们看一个简单的示例:

#include <iostream>
#include <set>

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

   for (int i = 1; i <= 10; i++) myset.insert(i*10);    
   it = myset.find(40);
   myset.erase (it);
   myset.erase (myset.find(60));

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

   return 0;
}

输出:

myset contains: 10 20 30 50 70 80 90 100

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程