STL SET迭代器分配没有可行的候选者

时间:2015-04-25 16:29:11

标签: c++ stl set

我有一个使用带有迭代器的STL Set的C ++程序。 set和iterator定义为:

 set<TokenTableEntry*, Comparator> _XCLITokenTable;

 set<TokenTableEntry*>::const_iterator it;

我有一个名为findToken的例程(如下所示),它有一个语句:

 it = _XCLITokenTable.find(_TokenTableEntry);

产生错误消息:

  

&#34;隐式std :: _ Tree   std :: less,std :: allocator,0&gt;&gt; :: const_iterator :: operator =(const std :: _ Tree,std :: allocator,0&gt;&gt; :: const_iterator&amp;)&#34;不是一个可行的候选人。

我不知道这条消息告诉我什么或如何纠正它。谁能提出建议?

感谢您的帮助。

约翰

int XCLITokenTable::findToken (string name,  TokenTableEntry *_TokenTableEntry) 
{

    int type;
    type = -1;

    string lookupName(name);

    std::transform(name.begin(), name.end(), name.begin(), ::tolower);

    _TokenTableEntry->name = lookupName;

    **it = _XCLITokenTable.find(_TokenTableEntry);**

    if (it != _XCLITokenTable.end())
    {
        if ((*it)->name == name)
        {
            type = (*it)->type;
            tokenCount++;
            *_TokenTableEntry = *(*it);
            return type;
        }

    }
    return type;
}

1 个答案:

答案 0 :(得分:1)

您应该将it声明为

set<TokenTableEntry*, Comparator>::const_iterator it;

如果C ++ 11可用,您可以使用auto

auto it = _XCLITokenTable.find(_TokenTableEntry);

(最好声明int XCLITokenTable::findToken(...) const,因此find的返回类型为const_iterator