调试std::set问题
Debugging a std::set issue
我写了一个具有特殊排序的集合:
std::set<int,std::function<bool(int const&,int const&)>> ListCases;
我对它有问题。我无法从中删除值9,因为对的调用
ListCases.find(9);
不返回可取消引用的迭代器。但当我用以下循环打印该集合的所有值时:
for (auto & eVal : ListCases)
std::cerr << " " << eVal;
我可以看到值9在存储的值列表中。
当我在一个单独的程序中隔离代码时,这个错误就会消失。使用编译器选项-fsanitize=undefined和其他检查运行clang++不会返回任何内容。
对此有什么可能的解释?还可以考虑其他什么调试选项?
您是否提供比较功能?
使用这段代码
typedef std::set<int,std::function<bool(int const&,int const&)>> MySet;
MySet wListCases([](int l, int r){ return l<r; });
wListCases.insert(9);
wListCases.insert(88);
wListCases.insert(1);
auto found = wListCases.find(9);
for (auto & eVal : wListCases)
std::cout << " " << eVal << std::endl;
如果我不提供lambda [](int l, int r){ return l<r; }
的函数,这个程序就会崩溃。否则,它将找到9并打印1, 9, 88
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 生成提升::hana::set 的常量表达式问题
- 使用 find() 通过 std::set 的迭代器将不起作用。出了什么问题?
- 创建 std::set 只复制一个元素,如何解决这个问题?
- 我对set.union(C++)有问题
- 调试std::set问题
- 使用 std::set 是<myOwnObjectType>问题的根源吗?
- is_container trait在std::set SFINAE问题上失败
- std::set和boost::shared_ptr唯一密钥标识问题
- 使用std-set时的一些问题