Visual c++ C++;,列表,如何从迭代器计算索引

Visual c++ C++;,列表,如何从迭代器计算索引,visual-c++,iterator,stdlist,Visual C++,Iterator,Stdlist,我有一个列表,我正在使用迭代器查找列表中的项目: std::list<std::string> groupsList = { Constants::Item1, Constants::Item2, ... }; std::list<std::string>::iterator groupListItr = std::find(groupsList.begin(), groupsList.end(), group); if ( groupListI

我有一个列表,我正在使用迭代器查找列表中的项目:

    std::list<std::string> groupsList = { Constants::Item1, Constants::Item2, ... };
    std::list<std::string>::iterator groupListItr = std::find(groupsList.begin(), groupsList.end(), group);

    if ( groupListItr == grousList.end() ) {
        return;
    }
    uint16_t groupIdx = (uint16_t)(groupListItr - groupsList.begin());
std::list groupsList={Constants::Item1,Constants::Item2,…};
std::list::迭代器groupListItr=std::find(groupsList.begin(),groupsList.end(),group);
if(groupListItr==grousList.end()){
返回;
}
uint16_t groupIdx=(uint16_t)(groupListItr-groupsList.begin());
在上面的find调用中,“group”是要查找的字符串。我正在试图找出如何获取列表中找到的项目的位置,如果有更简单的方法,请告诉我,在编译时,索引的计算会导致错误:

    error C2784: 'unknown-type std::operator -(const std::_Revranit<_RanIt,_Base> &,const std::_Revranit<_RanIt2,_Base2> &)' : could not deduce template argument for 'const std::_Revranit<_RanIt,_Base> &' from 'std::_List_iterator<std::_List_val<std::_List_simple_types<std::basic_string<char,std::char_traits<char>,std::allocator<char>>>>>'
    1>          c:\program files (x86)\microsoft visual studio 12.0\vc\include\xutility(937) : see declaration of 'std::operator -'
错误C2784:'unknown type std::operator-(const std:_Revranit&,const std:_Revranit&'):无法从'std:_List_iterator'推断'const std::_Revranit&'的模板参数
1> c:\ProgramFiles(x86)\microsoft visual studio 12.0\vc\include\xutility(937):请参阅“std::operator-”的声明
解决方案:

    uint16_t groupIdx = (uint16_t)std::distance(groupsList.begin(), groupListItr);