我一直收到这个错误"未解决的问题"在l_vector.begin()
和l_vector.end
上,特别是在begin
和end
函数上,为什么不识别这些简单的向量函数?
#include <cstdlib>
#include <iostream>
#include <ctime>
#include <vector>
#include <string>
using namespace std;
// function prototype
int FindIndexOfLargest(vector<int> l_vector);
int main()
{
int FindIndexOfLargest();
return 0;
}
//function definition
int FindIndexOfLargest(vector<int> l_vector)
{
vector<int>:: const_iterator iter;
int current_max_location = 0;
int current_max = 0;
for(iter = l_vector.begin(); iter != l_vector.end(); ++iter)
{
if(*iter > current_max)
{
current_max_location = iter;
}
return current_max;
}
}
答案 0 :(得分:0)
我看到编译失败的几个原因。
int FindIndexOfLargest();
在std::vector <int>
中调用此功能时,您必须将main()
传递给此功能。
最后,您的函数int FindIndexOfLargest(vector<int> l_vector)
必须返回int
值。
编写此功能的另一种方法是使用std::max_element和std::distance。
std::size_t FindIndexOfLargest(const std::vector <int> &input)
{
std::vector<int>::const_iterator max_value =
std::max_element(input.cbegin(), input.cend());
if (max_value != input.cend()) {
return std::distance (input.cbegin(), max_value);
}
// Otherwise, throw an expection or return an error value here.
}