c++ - 在 C++ 中为 vector 查找函数

标签 c++ vector

好吧,我是新手,我很难理解这一点。

我做了这段代码,

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main (void)
{
    vector <int> a;
    int i;
    a.push_back(1);
    a.push_back(2);
    a.push_back(3);
    a.push_back(4);
    a.push_back(5);

    vector <int>::iterator position = find(a.begin(),a.end(),6);
    cout<<*position<<"\n";
    return 0;
}

我到处都读到,find 函数如果没有找到任何内容,就会将迭代器返回到 vector 的末尾。所以,当我这样做并搜索 vector 中不存在的值 6 时,它应该将迭代器返回到 vector 的末尾,实际上是 5 .在打印实际值时,它应该打印 5 但它打印的是 0。为什么如果 find 在 vector 中找不到与该值相关的任何内容,它会将迭代器返回到最后一个值,然后它会打印 0

最佳答案

不,它不会返回 vector 的结尾,它会返回vector.end()

前者表示 vector 的最后一个元素,即 5。

后者 vector.end()past the end of the vector

这增加了一些困惑,因为 vector.begin()确实指向 vector 的第一个元素,但由于迭代这些容器的方式,这是必需的。

关于c++ - 在 C++ 中为 vector 查找函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343720/

相关文章:

c++ - 关于c++中 vector 的地址

c++ - 使用迭代器删除 vector 中的元素

c++ - 用作一维的多维 vector 的迭代器?

c++ - 这可能在宏中使用省略号吗?可以转换成模板吗?

java - 初始化对象并稍后根据 if 语句中的值创建它

c# - 从 C# 中列出非 .NET DLL 函数

c++ - vector resize 抛出 bad_alloc 是否会使原始数据无效?

用于 HPC 的 C++ std::vector?

c++ - 带有 C/C++ 扩展的 VSCode 中多行注释的缩进错误

c++ - 控制台应用去向c++