4.4.3 使用find()算法
在显示向量scores的内容后,程序从用户获取要查找的值,并存储在变量score中。然后,程序使用find()算法在scores向量中查找该值:
- iter = find(scores.begin(), scores.end(), score);
STL的find()算法在指定范围内的容器元素中查找值,它返回引用第一个匹配元素的一个迭代器。如果没有找到匹配的元素,则返回的迭代器指向指定范围的结尾处。必须给find()传递一个起点迭代器、一个终点迭代器和要查找的值。该算法从起点迭代器开始查找,一直查找到但不包括终点迭代器。本例中,程序将scores.begin()和scores.end()作为算法的前两个实参来搜索整个向量。作为第三个实参的score是用户输入的需要查找的值。
接下来,程序检查值score是否找到:
- if (iter != scores.end())
- {
- cout << "Score found.\n";
- }
- else
- {
- cout << "Score not found.\n";
- }
请记住,如果找到score的值,iter将引用向量中第一次出现score的元素。因此,只要iter不等于scores.end(),就说明查找成功。随后程序显示消息表示查找成功。否则,iter将等于scores.end(),说明查找失败。