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