std::调用 end() 时出现多映射错误
std::multimap error when calling end()
如何检查多重映射的元素是否存在?
使用此代码:
typedef std::multimap<std::string, std::string> TagVal;
TagVal tv;
//... add values to tv ...
TagVal::const_iterator it = tv.find("abc");
if(it == TagVal::end()) // <--- ERROR
cerr << "Error";
我收到以下编译时错误:
错误:无法调用成员函数 'std::multimap<...>:::iterator std::multimap<...>::end() ... 没有对象。
平台: Linux, GCC 4.5.1
原因是end
不是一个静态方法,它必须在你从中获取迭代器的对象上调用:
if(it == tv.end())
cerr << "Error";
因为您已将tv
初始化为
TagVal tv;
你必须调用 multimap 类的 end() 函数为:
it == tv.end()
因为 end() 是在该对象上调用的,它不是一个静态方法。
相关文章:
- C++映射分割错误(核心转储)
- 错误处理.将系统错误代码映射到泛型
- 删除映射和分割错误中的一个过去结束元素
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- OpenGL 4.3 错误地将第 4 个纹理坐标映射到与第 3 个纹理坐标相同的位置
- 线程时访问静态映射时出现隔离错误
- C++ 将元素分配给映射值时访问错误
- C++映射容器 erase() 分段错误
- 为C++中的无序映射获取给定输入键的错误值
- std::映射服装比较函数和函数/lambda错误
- 自定义哈希表实现-将字符串映射到整数时出现内存错误
- 使用无序映射进行错误索引
- std::映射导致插入时出现C2664错误
- 与映射和unordered_map相关的编译错误:"attempting to reference a deleted function"
- 在共享内存中插入映射映射时出现编译器错误
- 访问range_expression中的嵌套元素会返回不完整的映射(段错误)
- std::map 擦除 - 将迭代器传递给错误的映射
- 解析序列/映射节点时出现无效的 yaml 节点错误
- 为什么 du -sh 输出错误大小的内存映射文件
- C ++尝试访问映射中的元素会给我一个不匹配的函数调用错误