.begin()和.end()上未解析的标识符?

时间:2016-03-25 21:06:47

标签: c++ vector identifier

我一直收到这个错误"未解决的问题"在l_vector.begin()l_vector.end上,特别是在beginend函数上,为什么不识别这些简单的向量函数?

#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;
    }
}

1 个答案:

答案 0 :(得分:0)

我看到编译失败的几个原因。

  
    

int FindIndexOfLargest();

  

std::vector <int>中调用此功能时,您必须将main()传递给此功能。

最后,您的函数int FindIndexOfLargest(vector<int> l_vector)必须返回int值。

编写此功能的另一种方法是使用std::max_elementstd::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.
}