用于在字符串向量中查找元素位置的函数中的错误(c ++)

时间:2017-02-15 20:15:26

标签: c++ c++11 compiler-errors auto

我有以下功能可以正常工作,用于在字符串向量中查找字符串的位置:

int FindIndexString(vector <string> *Names, string *name)
{
    auto it = find(Names->begin(), Names->end(), name->c_str());
    if (it == Names->end())
    {
         error("FindIndexString: %s not found",name->c_str());
    }else{
        auto index = distance(Names->begin(), it);
        return((int)index);
    }
}

我需要在R程序中使用此函数,该程序抱怨“auto”说明符,我无法使用C ++ 11进行编译。

我将功能更改为

int FindIndexString(vector <string> *Names, string *name)
 {
     vector<string>::iterator it;
     it = find(Names->begin(), Names->end(), name->c_str());

     int pos = (int)distance(Names->begin(), it);

     if(it==Names->end())
     {
          error("FindIndexString: %s not found",name->c_str());;
     }else{
         return(pos);
     }    
  }

但它不起作用,我收到以下错误

In function 'int FindIndexString(std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*, std::string*)':
F_Utils.cpp:92: error: no matching function for call to 'find(__gnu_cxx::__normal_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, __gnu_cxx::__normal_iterator<std::basic_string<char, std::char_traits<char>, std::allocator<char> >*, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, const char*)'

任何帮助?

1 个答案:

答案 0 :(得分:1)

#include <algorithm>

需要std::find