草庐IT

c++11 正则表达式和 GCC

根据https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2011C++11标准的正则表达式引擎应该在GCC中完成。现在,有人可以向我解释为什么这个简单的例子#include#include#includeusingnamespacestd;intmain(){stringstring_array[]={"http://www.cplusplus.com/reference/regex/regex_match/","tcp://192.168.2.1:1234/hello/how/are/you",

Ubuntu 22.04 更新完内核重启卡在 grub 命令行解决办法

倒霉伊始升级内核过程中出现如下警告,然后重启引导失败:Warning:os-proberwillnotbeexecutedtodetectotherbootablepartitions屏幕内容如下:GNUGRUBversion2.06MinimalBASH-likelineeditingissupported.Forthefirstword,TABlistspossiblecommandcompletions.AnywhereelseTABlistspossibledeviceorfilecompletions.ESCatanytimeexits.grub>从GRUB2命令行界面启动系统因为卡

c++ - 在 C++11 中将 std::vector 移动到 std::deque

如果我有std::deque和std::vector并想将它们组合成std::deque,我可以通过以下方式做到这一点:typedefintT;//typeintwillservejustforillustrationstd::dequedeq(100);//justsomerandomsizeherestd::vectorvec(50);//...doingsomefilling...//nowmovingvectortotheendofqueue:deq.insert(deq.end(),std::make_move_iterator(vec.begin()),std::make_

c++ - 将 C++11 move 语义应用于绑定(bind)函数

我有一些现有的C++98代码,它们使用boost::function和boost:bind进行异步回调。一些相关的简化代码片段包括:typedefboost::functionWriteHandler;structWriteOperation{WriteOperation(constboost::shared_ptr&device,conststd::string&data,constWriteHandler&handler):m_Device(device),m_Data(data),m_Handler(handler){}private:boost::shared_ptrm_Dev

C++11 交叉编译器/标准库随机分布再现性

虽然随机引擎需要在每个编译器上给出相同的数字序列。至少有一些随机分布不是,只要求它们满足统计和概率阈值。例如:#include#includeintmain(){std::mt19937foo;std::uniform_int_distributionbar(0,1000);for(inti=0;i针对(我的版本)libstdc++编译时将打印808,针对libc++编译时将打印89。无论给定什么样的合规环境,哪个标准提供的分布函数(如果有的话)都能保证产生一致的结果? 最佳答案 不幸的是,从N3936(C++14最终草案)开始,没

c++ - 在 DirectX11 游戏上叠加

我正在开展一个项目,以在任何DirectX11游戏上显示叠加层。现在overaly可以在一些DX11游戏中显示,但在其他一些游戏中不能显示。我使用MSDetour连接了DX11APIIDXGISwapChain::Present()。在函数Present()中,我设置了每个管道,调用DrawIndex和ResourceCopy将我的叠加纹理更新到GPU的内存,然后调用原始Present将后台缓冲区带到前台缓冲区。它在某些游戏(如Unigene和DIRT2)中运行良好,但在其他一些游戏(如LostPlanet2和DragonAge2)中不起作用。通过Hook所有DX11函数进行一些日志记

C++11:计算可变函数参数类型

假设您要编写一个函数,该函数将不透明句柄传递给未知类型的函数(例如,包含具有商定名称的函数的结构的名称),并将参数转发给该函数。在非可变参数的情况下,为简单起见考虑单参数函数,有两种方法可以做到这一点:您可以让转发函数接受任意类型的参数,并尝试用它调用转发函数,然后如果结果不兼容,编译器会在模板扩展期间提示;或者您可以使用decltype和其他各种机制来确定forwardee函数期望的参数类型,并明确要求该类型的参数。我不知道这些是否有公认的术语,所以我将它们称为“通过”和“预先”。passthrough方法可以直接泛化为具有任意数量参数的函数,但upfront方法不能。#includ

C++11 检查成员的 COM 智能指针

我有一堆类似集合的COM接口(interface),我正在尝试为其编写类似STL的迭代器。我已经让迭代器正常工作并专门化了begin()和end()来返回我的迭代器。一切都很完美!除了,当我尝试使用begin(std::vector)时,它使用的是我对begin()的非常一般的特化。由于这些COM对象不是从基础集合对象扩展的,所以我首先尝试:templateCollectionIteratorbegin(CollTypecoll)我明白为什么重载解析没有为std::vector选择正确的begin(),但我不确定如何解决这个问题。不幸的是,我没有一个基集合类来专门针对coll参数。我假

c++ - 在 C++11 中使用异步的分段​​错误(核心转储)

我创建了一个将现有树对象转换为字符串的函数。字符串格式为parent(child1)(child2(childOfChild2))程序正确输出了字符串,做了一些其他的工作,但是在Segmentationfault(coredumped)这是函数(getTree(this->root)输出整棵树):templatestringTree::getTree(constNode&node){if(node.isLeaf()){returnto_string(node.value);}vector>results;//eachelementrepresentsasubtreeconnectedt

c++ - Qt Creator 2.6.1 + Qt 5 + C++11 + MSVC2010 编译器

我正在尝试使用Qt在Windows上构建C++应用。我的设置是:已安装Vs2008、2010、2012已安装Qt5RC1现在,当我#include并尝试使用std::unique_ptr时,它告诉我它没有定义,所以我查看了VS2010header,发现需要定义_HAS_CPP0X,所以我将它作为DEFINES+添加到.pro=_HAS_CPP0X这仍然没有效果,所以我ctrl+clicking#includememory只是为了找到它使用的memoryheader来自:C:\ProgramFiles(x86)\MicrosoftVisualStudio9.0\VC\include里面真