найти () STL в векторе в C ++ - PullRequest
1 голос
/ 05 января 2020

Сегодня я пытался найти положение элемента в векторе без двоичного кода поиска, и я обнаружил, что есть что-то вроде 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;
}

Что я должен сделать, чтобы получить положение любого элемента в векторе? Спасибо

1 Ответ

7 голосов
/ 05 января 2020

Попробуйте

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

Или, что еще лучше,

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

(a.end() - b) вычисляет расстояние между найденным элементом и концом вектора, которое в действительности равно 4.

...