STL SET 迭代器赋值 没有可行的候选者
STL SET Iterator assignment no viable candidate
我有一个使用带有迭代器的STL集的C++程序。集合和迭代器定义为:
set<TokenTableEntry*, Comparator> _XCLITokenTable;
set<TokenTableEntry*>::const_iterator it;
我有一个名为findToken的例程(如下所示),它有一个语句:
it = _XCLITokenTable.find(_TokenTableEntry);
这会产生错误消息:
"隐含标准::_Tree std::less,std::allocator,0>>::const_iterator::operator=(const std::_Tree,std:::allocator,0>>::const_iterator &)" 不是一个可行的候选者。
我不知道这条消息告诉我什么或如何纠正它。任何人都可以提出建议吗?
感谢您的任何帮助。
John
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;
}
你应该将it
声明为
set<TokenTableEntry*, Comparator>::const_iterator it;
或者,如果 C++11 可用,您可以使用auto
:
auto it = _XCLITokenTable.find(_TokenTableEntry);
(并最好声明int XCLITokenTable::findToken(...) const
,因此find
的返回类型将是const_iterator
)
相关文章:
- 为什么我无法更改"set<set>"循环中的值<int>
- 对于set上的循环-获取next元素迭代器
- 在声明中合并两个常量"std::set"(不是在运行时)
- 有没有办法对std::unordered_set、std::unrdered_map、std::set、std::map
- 将 std::set 与基于键的比较器一起使用
- 如何使用set实现无序数据结构?
- 使用运算符调用 void 函数时出错<set>
- 修改"std::set"中用户定义类型的值
- 生成提升::hana::set 的常量表达式问题
- 如何在构造函数参数中初始化"std::set"?
- 如何使用 lower_bound/upper_bound 从 std::set 获取索引号?
- 如何在 C++ 中转发声明 std::set?
- 重构使用动态强制转换的 std::set 的比较运算符
- set::find 查找不存在的元素
- 为什么 std::set.erase(first, last) 会影响从中获取 (first, last) 的容器?
- 将 std:set<int32_t> 复制到 std::set <uint32_t>的好方法
- 错误 C2676:std::set::const_iterator 没有运算符 + 函数?
- std::set 是否将对象连续存储在内存中?
- 是否有一个 std::set 函数来确定不超过数字 x 的最大元素?
- STL SET 迭代器赋值 没有可行的候选者