将find()函数与集合一起使用

时间:2014-03-13 02:54:13

标签: c++ iterator find set

我刚刚在本书中遇到过这一章,我真的不明白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;
}

2 个答案:

答案 0 :(得分:1)

以下是您的计划的正确实施......

#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的insert函数。其次,你把迭代器作为一个不正确的int。 Iterator基本上是set类型的指针。所以你必须采用set

的迭代器

答案 1 :(得分:0)

您的代码有两个问题-首先是构造函数的用法,另一个是将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;
}