对set使用find()函数

Using the find() function with sets

本文关键字:函数 find set 使用      更新时间:2023-10-16

我刚刚在我的书中遇到这一章,我真的不明白find()是如何工作的。我试图创建一个简单的函数来检查find()函数是如何工作的,但是我在代码中得到了大量的错误。

#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> setA(1,2);

int item;
cout << "Enter a number: ";
cin >> item;
int setIter;
setIter = setA.find(item);
if (setIter != setA.end())
{
  cout << "It's in the list." << endl;
}
return 0;
}

这是你的程序的正确实现…

#include <iostream>
#include <set>
using namespace std;
int main()
{
    set<int> setA;
    setA.insert(1);                 // use insert function
    setA.insert(2);
    set<int>::iterator setIter;    // take set iterator
    int item;
    cout << "Enter a number: ";
    cin >> item;
    setIter = setA.find(item);
    if (setIter != setA.end())
    {
      cout << "It's in the list." << endl;
    }
    return 0;
}

你在程序中犯了两个错误。首先,你使用构造函数初始化set,这不起作用,所以你必须使用set的插入函数。其次,你把迭代器当作int型,这是不正确的。迭代器基本上是一个集合类型的指针。所以你必须取set

的迭代器

您的代码有两个问题-第一个是构造函数的使用,另一个是将set.find()返回的set迭代器赋值为int。下面是更正后的代码:

#include <iostream> 
#include <set> 
using namespace std; 
int main() 
{ 
    set<int> setA({1,2});
    int item;
    cout << "Enter a number: ";
    cin >> item;
    set<int>::iterator setIter = setA.find(item);
    if (setIter != setA.end())
    {
      cout << "It's in the list." << endl;
    }
    return 0;
}