find() stl 在 C++ 中的向量中

Sud*_*Y S 1 c++ stl vector find

今天我试图在没有二进制搜索代码的情况下在向量中找到一个元素的位置,我发现有 find() stl 这样的东西我实现了它并且它正在编译但它没有给出正确的输出

这是我的代码:

#include <bits/stdc++.h>
using namespace std;

int main() {

    int n;
    vector<int> a(0);

    a.push_back(6);
    a.push_back(3);
    a.push_back(9);
    a.push_back(5);
    a.push_back(1);

    vector<int> :: iterator b;
    b = find(a.begin() , a.end() , 3);

    cout << (a.end() - b); // output is 4

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能获得向量中任何元素的位置?谢谢

Dan*_*ica 7

尝试

std::cout << (b - a.begin());
Run Code Online (Sandbox Code Playgroud)

或者,更好的是,

std::cout << std::distance(a.begin(), b);
Run Code Online (Sandbox Code Playgroud)

(a.end() - b) 计算找到的元素和向量末尾之间的距离,实际上是 4。