对set使用find()函数
Using the find() function with sets
我刚刚在我的书中遇到这一章,我真的不明白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;
}
相关文章:
- 使用.find函数在c++中查找字符和另一个字符之间的大小
- 使用 std::find 时没有匹配的函数调用错误
- std::set<Key,Compare,Allocator>::find() 函数使用"<"运算符而不是"=="运算符背后的直觉是什么?
- 为什么std::map有find成员函数
- find() 函数对集合有效吗?
- C++ std::find() 寻址返回向量的类函数时的意外行为
- Find() 函数的复杂性是什么?
- 函数:'find'未为 std::vector 定义
- 如何在map::find()函数中引用类元素?
- C ++设置与结构,set.find()函数使错误'invalid comparator'
- Qt C++macOS问题。我正在使用函数 .find( "a word") 在多集中搜索单词,它适用于 Windows 但不适用于 mac
- 添加项目后C find()函数不起作用
- std::map中的find()函数返回一个值,尽管没有有效的键
- 与自定义类unordered_map的 FInd 函数
- 使用 string::find 和 string::substr 拆分字符串的函数返回错误的标记
- C++std::set Find函数重载==运算符
- 类成员容器迭代器在成员函数std::find中不兼容,但为什么不兼容呢
- 在C++中使用find函数时出现问题
- 模板化"find-and-erase"函数中的错误
- 字符* 的等效函数'find'