首页 > 解决方案 > 找到后显示元素的索引

问题描述

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;


int main() {
    int s;
    std::cin >> s;
    std::vector<int> numbers;

    for(int i{1}; i <= s; i++) {
        int num_input;
        std::cin >> num_input;
        numbers.push_back(num_input);
    }

    int c_s;
    std::cin >> c_s;

    while(c_s--) {
        int n;
        std::cin >> n;



        if(std::find(numbers.begin(),numbers.end(), n) != numbers.end()) {
            std::cout << "Yes" << std::endl;
        } else {
            std::cout << "No" << std::endl;
        }
    }
}

黑客等级有一个编码问题,希望我在找到它时显示 int 的索引,但我想不出任何方法来做到这一点。有没有更简单的方法来做到这一点?

标签: c++11

解决方案


std::distance您可以使用返回的迭代器获取索引std::find。您可以按如下方式更改代码

std::vector<int>::iterator it = std::find(numbers.begin(),numbers.end(),n);
if(it != numbers.end()) {
    std::cout << "Yes, found at" << std::distance(numbers.begin(),it) << std::endl;
} else {
    std::cout << "No" << std::endl;
}

推荐阅读