草庐IT

set_false_path

全部标签

c++ - 编写可以使用 std::vector 或 std::set 的模板

我编写了一个异步作业队列类,多年来一直运行良好。它使用std::vector作为底层集合来保存作业,然后按照您的预期稍后处理它们。当我添加作业时,它会在此vector上执行push_back。最近我决定要模板化它使用的底层集合类型以及我编写它的方式,这应该非常简单。现在声明如下:template>classasync_jobqueue{public:只有一个障碍,对于vector类型的容器,我想将东西推到集合的末尾并调用push_back,对于settish类型的容器,我想调用insert。我怎样才能做出关于调用哪个的编译决定?或者有没有我可以使用的方便的适配器?

c++ - 从 map<key, set<datatype>> 访问元素

我正在使用如下所示的数据结构:map>data;到目前为止,我在使用foreach循环处理map时没有遇到任何问题,但是,现在我需要像这样打印出map中的数据:KEY:elem1,elem2,elem3KEY2:elem1,elem2,elem3由于末尾缺少逗号,我不能再使用foreach循环了(可以吗?)。由于我是C++、C++11及其提供的所有乐趣的新手,所以我很迷茫。我想到了:for(autoi:data){cout我知道自己想要什么,只是对语法一无所知,C++引用也帮不上什么忙。感谢您的回答,同时我将自己浏览C++引用资料。 最佳答案

c++ - 是否有任何 std::set 实现不使用红黑树?

有没有人见过STL的实现,其中STL::set不是实现为红黑树?我问的原因是,在我的实验中,B树优于std::set(和其他红黑树实现)2到4倍,具体取决于值B.我很好奇,当似乎有更快的数据结构可用时,是否有令人信服的理由使用红黑树。 最佳答案 Google的一些人实际上构建了一个B-treebasedimplementationoftheC++standardlibrarycontainers.它们的性能似乎比标准二叉树实现要好得多。不过有一个问题。C++标准保证从映射或集合中删除元素只会使指向映射或集合中相同元素的其他迭代器无效

c++ - 迭代 boost::icl::interval_set

我正在迭代boostinterval_set,我期望每个迭代器都是一个boostinterval,其值将通过upper访问和lower方法:boost::icl::interval_setoutages;//...//Insertintervalsintothedatabasefor(boost::icl::interval_set::iteratorit=outages.begin();it!=outages.end();it++){DATA_ACQUISITION::InsertInterval(db,it->lower(),it->upper())}但我在两个lower都收到错误

c++ - isalpha(<mychar>) == true 计算结果为 false?

stringtemp等于来self的调试器的“ZERO:\t.WORD\t1”。(我文件的第一行)stringtemp=RemoveWhiteSpace(data);inti=0;if(temp.length()>0&&isalpha(temp[0]))cout0&&isalpha(temp[0])==true)cout这是我的代码,用于检查temp的第一个字符是否为a-z、A-Z。第一个if语句将评估为true,第二个if语句将评估为false。为什么?!?!?!即使没有“temp.length()>0&&”,我也试过了,它仍然评估为false。它只是讨厌“==true”。我唯一能想

c++ - 对于 malloc() 失败是否有等效的 set_new_handler()?

在C++中,你can安排一个函数在new失败时调用。有没有办法在malloc失败时调用一个函数?假设正在从我不想更改的第三方库调用malloc。我认为没有可移植的答案,所以我很乐意接受特定于平台的答案。我在某些平台上使用Linux+uclibc,在其他平台上使用Linux+glibc。我打算使用setrlimit限制malloc可以返回的内存量。 最佳答案 malloc如果失败则返回NULL。您应该处理它,以及CRT内存函数的其他故障(realloc尤其容易出错)。在一般情况下,我认为您必须将内存的所有CRT使用包装在您自己设计的函

c++ - 在 unordered_set 中插入一个新元素 : should the hint be end()?

如果我确定某个值还没有进入unordered_set,并且我要插入这样的值,传递这个集合end()是否正确>迭代器作为提示?编辑:代码:#includeusingnamespacestd;unordered_setsomeset;intmain(){autoit=someset.find(0);if(it==someset.end())someset.insert(it,0);//correct?possibleperformanceboostifthesetisactuallypopulated?} 最佳答案 我想,你可以简单地调

c++ - std::logic_error 而不是返回 false

我正在寻找某人对std::logic_error用法的意见,而不是使用复杂的嵌套if/elseif列表返回true/false。我想从很多类似的函数中移动,如下面的函数boolvalidate_data(){std::vectorv;//fillwithdataif(v.find(10)==v.end()){returnfalse;}//otherchecksthatreturnfalse}到boolvalidate_data(){std::vectorv;//fillwithdataif(v.find(10)==v.end()){throwstd::logic_error("erro

c++ - 比较两个具有相同值的 TCHAR 结果为 false

我正在尝试检查我的应用程序路径,如果它不是指定路径,则移动它。我觉得我的代码很可靠,但它不能正常工作。TCHARpCheck[MAX_PATH];TCHARxPath[MAX_PATH];GetModuleFileName(NULL,xPath,MAX_PATH);if(SHGetSpecialFolderPath(HWND_DESKTOP,pCheck,CSIDL_DESKTOP,FALSE)){wcscat(pCheck,L"\\NewFile.exe");MessageBox(NULL,pCheck,NULL,NULL);MessageBox(NULL,xPath,NULL,NU

c++ - boost::filesystem::remove_all(path) 是如何工作的?

我正在尝试使用boost::filesystem::remove_all(path)从特定路径中删除所有目录、子目录和包含的文件。如果文件在另一个程序中打开,我还想显示一条错误消息。在这种情况下boost::filesystem::remove_all(path)会抛出异常吗?或者有其他方法可以实现吗? 最佳答案 这不适合发表评论,所以我发布为答案只需查看源代码:http://www.boost.org/doc/libs/1_55_0/libs/filesystem/src/operations.cppBOOST_FILESYSTE