草庐IT

c++ - std::set_new_handler 如何提供更多可用内存?

来自std::set_new_handlernew-handler函数是分配函数在内存分配尝试失败时调用的函数。它的预期目的是三件事之一:提供更多可用内存终止程序(例如通过调用std::terminate)抛出类型为std::bad_alloc或派生自std::bad_alloc的异常下面的重载能保证什么吗?void*operatornew(std::size_tsize)throw(std::bad_alloc){while(true){void*pMem=malloc(size);if(pMem)returnpMem;std::new_handlerHandler=std::set

c++ - std::set 为数组中的每个元素

我需要为数组中的每个元素提供std::set功能。我怎样才能实现这个功能?我开始在C++中分配标准集的动态数组,如下所示:set*entry;接着是分配:entry=(set*)malloc(sizeof(set)*32);没有编译问题,但是当访问任何元素时运行时失败并出现段错误:entry[0].insert(23);非常感谢任何帮助。 最佳答案 关于#include#includeintmain(){std::vector>entry(32);//std::vectorconstructormakes32callstostd::

c++ - 插入期间容器 std::set 的行为?

插入集合时,集合内部是否多次删除了某些对象?我试图在下面的程序中插入两个MyClass类型的对象,但令我惊讶的是它调用了具有初始插入值的类的析构函数2次!我无法理解这背后的任何逻辑。任何人都可以对输出给出一些想法吗?(突出显示为粗体)#include#include#includeusingnamespacestd;structMyClass{doublenum;~MyClass(){printf("Destructorcalled..forval:%lf\n",num);}};typedefint(*fun_comp)(MyClass,MyClass);intcomp(MyClass

c++ - 如何在实现文件中初始化一个 static const set<string>?

我对staticconstset的初始化似乎不正确,我很感激你的指导方针:obj.h:classobj{...private:staticconstsetkeywords;...}obj.cpp:conststringkw[]={"GTR","LTR","LEQ","GEQ","NEQ","SQRT","sqrt"};constsetobj::keywords=(kw,kw+sizeof(kw)/sizeof(kw[0]));但这会产生错误:error:conversionfrom‘conststring*{akaconststd::basic_string*}’tonon-scala

c++ - Visual Studio 2017 "Object reference not set to an instance of an object."的 cppcheck 插件问题

我正在尝试将cppcheck插件与visualstudio2017一起使用。但是,当我选择工具/使用cppcheck检查当前项目时,它总是说“对象引用未设置为对象的实例。”有什么建议吗?我正在使用MicrosoftVisualStudioProfessional2017,版本15.7.6CPPCheckPlugin1.3.5CMake3.12.1Windows10专业版64位谢谢。 最佳答案 对我来说,在我编辑项目并选中“EnableCodeAnalysisonBuild”后问题就解决了。然后我可以取消选中此选项,但它离开了fals

c++ - std::set 中的函数和方法指针

如所述inanothermessageofmine,不可能将2个成员函数指针与"进行比较。或者至少,这会导致未定义的行为。我刚刚成功地用VisualC++和GCC编译了这段代码:templateclassEventReceiver:publicIFunction{protected:std::settest;std::settest2;...据我所知,要制作任何东西的std::map或std::set,必须可以将集合的值与“ 最佳答案 好吧,编译示例代码实际上误导。事实上,这些套装无法使用。每次尝试向其中插入数据都会产生预期的错误。

c++ - 如何测试使用我可以使用的 MPI 调用 : is there any set of mock functions, 的 C\C++ 代码?

#includedoublef(){doubletimer=MPI_Wtime();returntimer;}我要搜索的是一组模拟MPI函数,所以我可以#include而不是mpi.h并在不链接到MPI库的情况下编译它。它也可能类似于#defineMOCK这将在mpi.h中触发此行为。 最佳答案 据我所知,没有任何模拟可以让您直接#include并完成。但是,无论您选择使用哪种模拟框架,您自己编写所需的函数应该没什么大不了的。只需从一个空header开始,看看您的编译器提示了哪些函数。

c++ - 使用 lambda 表达式作为 std::set 的比较,当它在 vector 中时

我想使用lambda表达式作为std::整数集的自定义比较。这个网站上有很多答案解释了如何做到这一点,例如https://stackoverflow.com/a/46128321/10774939.事实上,#include#include#includeintmain(){autodifferent_cmp=[](inti,intj)->bool{returnjintegers(different_cmp);integers.insert(3);integers.insert(4);integers.insert(1);for(intinteger:integers){std::cou

c++ - 将 boost::unordered_set 作为结果映射传递给 boost::split

有谁知道将boost::unordered_set作为第一个参数传递给boost::split是否合理?在libboost1.42-dev下,这似乎会导致问题。这是导致问题的一个小示例程序,将其称为test-split.cc:#include#include#include#includeintmain(intargc,char**argv){boost::unordered_settags_set;boost::split(tags_set,"a^b^c^",boost::is_any_of(std::string(1,'^')));return0;}然后,如果我运行以下命令:g++

C++ 错误 : Conversion to Execution Character set

问题是我试图在ASCII之外打印一些字符,例如德语变音字符、“ß”等。这些字符不适合普通的char变量,所以显然我试图将它们放在wchar_t中并用L"...."初始化字符串。但是每当这个字符串包含上面的一个字符时,我都会得到提到的错误,但是对于ASCII的所有其他字符都没有问题。u"....",U"......"也会发生这种情况,如果我使用u8"......"它不会产生错误但会打印垃圾。所以问题:如何从ASCII集之外打印这些字符和其他字符?无论如何,这个错误是什么意思?我可以打印字符的唯一方法是调用setlocale()将语言环境设置为环境默认值(德语),然后通过简单地创建一个包含