在 C++ 中的向量中查找() stl

Posted

技术标签:

【中文标题】在 C++ 中的向量中查找() stl【英文标题】:find() stl in vector in c++ 【发布时间】:2020-01-05 19:02:53 【问题描述】:

今天我试图在没有二进制搜索代码的向量中找到一个元素的位置,我发现有 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;

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

【问题讨论】:

请阅读Why should I not #include <bits/stdc++.h>?以及Why is “using namespace std;” considered bad practice? 【参考方案1】:

试试

std::cout << (b - a.begin());

或者,甚至更好,

std::cout << std::distance(a.begin(), b);

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

【讨论】:

以上是关于在 C++ 中的向量中查找() stl的主要内容,如果未能解决你的问题,请参考以下文章

使用 STL 算法在表(向量的向量、二维数组)中查找最小值/最大值的优雅方法

C ++向量 - 查找(“'operator =='不匹配”)

如何在C++ STL的queue当中查找一个元素?

C++ STL中的Binary search(二分查找)

在 C++ 中查找向量中的值

C++ STL中的二分查找