c++11 - 找到后显示元素的索引
问题描述
#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 的索引,但我想不出任何方法来做到这一点。有没有更简单的方法来做到这一点?
解决方案
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;
}