草庐IT

set_exception

全部标签

c++ - 如何迭代 unordered_set 中的无序对?

在unordered_set中迭代无序元素对的简洁方法是什么?(因此顺序无关紧要,元素应该不同)e.g.{1,2,3}=>(1,2)(2,3)(1,3)我最初的尝试是这样的for(i=0;i但是对于迭代器来说这不是super方便。 最佳答案 这应该有效,给定一个std::unordered_sets:autoset_end=s.end();for(autoai=s.begin();ai!=set_end;++ai){for(autobi=std::next(ai);bi!=set_end;++bi){//*ai,*bi}}这基本上是

c++ - 获取 boost::exception 的 what() 消息

在下面的代码中,我想获取boost::exception的what()消息。#include#include#includeintmain(void){try{inti(boost::lexical_cast("42X"));}catch(boost::exceptionconst&e){std::cout当我运行它时,我收到消息:Exception:Throwlocationunknown(considerusingBOOST_THROW_EXCEPTION)Dynamicexceptiontype:boost::exception_detail::clone_impl>但是当我没有

c++ - std::exception_ptr 线程安全吗?

我有一个工作线程,它通过std::thread持续运行、创建和管理。在我的工作线程的顶层,我有一个try/catchblock,里面有一个while循环。如果异常泄漏到线程的顶层,我会捕获它并将其存储在std::exception_ptr中,它是还拥有非静态线程函数的类的成员://Inclassheader(insideclassdeclaration)std::exception_ptrm_threadException;//InclassCPPfilevoidMyClass::MyThreadFunction(){try{while(true){//Dothreadstuff}}c

c++ - set_intersection 用于两种不同类型的集合

有什么方法可以对两种不同类型的集合执行std::set_intersection吗?我有两套:std::setl_set1;std::setl_set2;我可以为它们定义一些比较器来检查X1和X2是否相等。structsample_comparer{booloperator()(const&X1p_left,const&X2p_right){returnp_left==p_right;}};现在,我尝试对这两个集合进行集合交集:std::setl_intersect;std::set_intersection(l_set1.begin(),l_set1.end(),l_set2.beg

C++ : How can I solve a first-chance exception caused at an unknown point?

我正在处理的一个C++项目在抛出第一次异常时终止。当我第一次尝试访问map,int>时,这发生在处于Debug模式的VisualStudio2008中其中包含单个键值对。代码在逻辑上没有任何错误。我已经阅读了有关第一次机会异常的信息,并且了解它们可能并不总是有问题。尽管如此,我尝试打破所有此类异常,并且正如预期的那样发现生成了几个不会导致问题的异常。我正在处理的类非常大并且包含许多自定义内存分配。我推测其中之一以某种方式导致了问题。然而,我花了几个小时试图找到一种方法来确定问题出在哪里,但一直无法做到。下面列出了第一次异常输出。这不是很有帮助!First-chanceexception

c++ - 具有 std::vector 和 std::set 属性的容器?

C++世界中是否存在具有这些属性的容器?元素是独一无二的,并在可定制比较器的帮助下有序提供随机接入运营商。我目前正在将我的数据收集到std::set中然后做一个std::copy(_set.begin(),_set.end(),std::back_inserter(_vec))能够随机访问有序集合。然而,规模可能会达到数亿。 最佳答案 如果可以选择Boost,请查看flat_setintheContainerslibrary.flat_set的接口(interface)与std::set相同但它提供随机访问迭代器,如std::vec

c++ - 如何保证在 Visual Studio 2005 下的 C++ 中捕获 EXCEPTION_STACK_OVERFLOW 结构化异常?

背景我有一个带有Poof-Crash[1]的应用程序。我相当确定这是由于堆栈损坏造成的。应用程序是多线程的。我正在使用“启用C++异常:是的,带有SEH异常(/EHa)”进行编译。我编写了一个SE翻译器函数并用它调用了_set_se_translator()。我已经为set_terminate()和set_unexpected()编写了函数并进行了设置。为了获得StackOverflow,我必须在高负载下以Release模式运行几天。在调试器下运行不是一种选择,因为应用程序的执行速度不足以达到查看问题所需的运行时间。我可以通过在执行其中一个函数时添加无限递归来模拟该问题,从而测试是否捕

c++ - 无效的模板相关成员函数模板推导 - 认为我正在尝试使用 std::set

我有一个继承自基类模板的类模板。基类模板有一个数据成员和一个我想从父类(superclass)中调用的成员函数模板。我知道为了消除对成员函数模板的调用的歧义,我必须使用template关键字,我必须明确提及this在父类(superclass)中。this->base_member_obj.templatemember_function();这一切都很好,只是我使用的代码库犯了一个相当不幸的错误,即导入了整个namespacestd。,我试图调用的模板成员函数称为set.框架中的某处std::set包含在内,这导致GCC认为我正在尝试声明std::set而不是调用成员函数set.GCC

c++ - 我们什么时候应该为 `std::unordered_set` 提供我们自己的哈希函数

当我编译下面的代码时,我看到了与Hash相关的错误。intF_no_meaningA(unordered_set>&setVec,vector&vec){setVec.insert(vec);return1;}intmain(){vectorW{2,3,7};unordered_set>setVec;}$g++--versiong++(Ubuntu/Linaro4.6.3-1ubuntu5)4.6.3$g++$1.cpp-o$1-g-Wall-Weffc++-pedantic-std=c++0x/tmp/ccCQFQ4N.o:Infunction`std::__detail::_Has

c++ - 具有自定义结构的 <set> 包含重复项

我一直在学习C++。我被这个问题困住了。我有一个包含自定义结构的集合,该结构包含两个longint的a和b。我有一个自定义比较器结构,用于比较数字并在a或b不同时返回true。typedeflongintli;structnumber{number(lia1,lib1):a(a1),b(b1){}lia,b;};structcompare{booloperator()(constnumber&lhs,constnumber&rhs)const{returnlhs.a!=rhs.a||lhs.b!=rhs.b;}};intmain(){setnums;nums.insert(number