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

标签 c++ stl set

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

 set<TokenTableEntry*, Comparator> _XCLITokenTable;

 set<TokenTableEntry*>::const_iterator it;

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

 it = _XCLITokenTable.find(_TokenTableEntry);

产生错误信息的地方:

"implicit std::_Tree std::less,std::allocator,0>>::const_iterator::operator=(const std::_Tree,std::allocator,0>>::const_iterator &)" is not a viable candidate.

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

感谢您的帮助。

约翰

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

最佳答案

你应该将声明为

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

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

auto it = _XCLITokenTable.find(_TokenTableEntry);

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

关于c++ - STL SET 迭代器分配没有可行的候选者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29867788/

相关文章:

c++ - 我应该在插入 STL 集之前随机洗牌吗?

python - 在python中的2D中的其他点集的凸包中找到部分或完全包含一组点

java - Grails:检查分离的对象是否在附加的集合中

c++ - cppcms 大量未解析的外部符号

c++ - 1 智能感知 : no suitable constructor exists to convert from "bool" to "std::basic_string<char, std::char_traits<char>, std::allocator<char>>"

c++ - 通过迭代器引用集合元素的地址

java - 如何为类型类的数组编写 'get/set method'?

c++ - 将数据分配给 cv::Mat

c++ - 在给定指向该元素的指针的情况下获取双端队列中元素的索引?

c++ - 为 STL 映射 : "cannot bind lvalue" 重载 << 和 >>