草庐IT

destroy_at

全部标签

c++ - 为什么 std::allocator::construct 和 std::allocator::destroy 在元素类型上模板化?

std::allocator的construct和destroy成员函数根据要构造的元素的类型进行参数化:templateclassallocator{public:typedefTvalue_type;typedefT*pointer;templatevoidconstruct(U*p,Args&&...args);templatevoiddestroy(U*p);...};这样做的理由是什么?他们为什么不选择value_type*或pointer?好像allocator应该只知道如何构造或销毁T类型的对象. 最佳答案 这与all

c++ - C++11 中 map 标准的 at() const 访问器是什么?

我试图找出如何在const方法中从map返回一个值,我偶然发现了gcc4.6中map的at()方法。当我查看它时,我意识到它是非标准的:C++mapaccessdiscardsqualifiers(const)但它确实比find()方法要简洁得多。我想知道C++11是否已纠正此问题-at()formap是新标准的一部分吗? 最佳答案 是的。std::map在C++11中有一个at成员函数,其规范如下(23.4.4.3/9):T&at(constkey_type&x);constT&at(constkey_type&x)const;R

c++ - 当 std::map::at 超出范围时返回什么?

在游戏中,我想搜索元素map并返回位于棋盘特定方格上的元素。但是,如果广场是空的呢?(这些项目未存储在板结构中。为了这个问题的目的,不要介意。)我有下面的代码,但是我应该怎么做才能返回“空”引用?map,Item*>_items;Item&itemAt(introw,intcol)const{try{return*_items.at(make_pair(row,col));}catch(out_of_range&e){return//whatgoeshere?}}或者这是错误的方法,我应该只使用find()? 最佳答案 如果在您的程

c++ - 为什么 `at` 和 `operator []` 没有实现异构比较查找?

自C++14(N3657)成员函数模板find,count,lower_bound,upper_bound,关联容器的equal_range支持异构比较查找,但at和operator[]没有那些等效的成员函数模板。为什么会这样?例子:std::map>m;//...autoit=m.find("foo");//doesnotconstructanstd::stringauto&v=m.at("foo");//constructanstd::string 最佳答案 原则上没有合乎逻辑的理由。例如operator[]一个合理的语义可能是

c++ - Clang 问题 : implicit type conversion at construction time

概要我正在努力使C++11代码与Clang兼容,并遇到了GCC>=4.6接受代码而Clang>=3.1不接受的情况。Clang认为候选构造函数不可行。详情这里是一个精简的例子来说明这个问题:#includetemplatestructT;templatestructT{typedefTsuper;constexprT(){}templateT(Args&&...){}};templatestructT:T{typedefTsuper;Headhead;T(Headarg):super(),head(std::move(arg)){}};structvoid_type{constexpr

c++ - 检查 string.at(i) 是否为空白 C++

我想检查char(string.at(i))在C++中是否为空白。我怎样才能轻松做到这一点?我得到了这个代码示例,我想用一些东西来改变_____,但不知道是什么。我试过使用'',但没有成功。for(inti=0;i 最佳答案 #includeif(isspace(string.at(i))) 关于c++-检查string.at(i)是否为空白C++,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/qu

c++ - "Looking At"具有四元数的对象

所以我目前正在尝试创建一个函数,它将采用两个3D点A和B,并为我提供代表A点“观察”B点所需的旋转的四元数(这样点A的局部Z轴穿过点B,如果你愿意的话)。我最初找到了thispost,其中的最佳答案似乎为我提供了一个很好的起点。我继续执行以下代码;正如原始答案所暗示的那样,我没有假设默认的(0,0,-1)方向,而是尝试提取表示相机实际方向的单位vector。voidCamera::LookAt(sf::Vector3Target){///Derivedfrompseudocodefoundhere:///https://stackoverflow.com/questions/13014

51单片机定时器。实验(六):定时器实验:使用AT89S51单片机的定时器/计数器T1控制LED每隔3秒点亮一次(即亮3秒,灭3秒,如此反复)

目录题目:proteus仿真:代码:分析题目:定时器:工作方式寄存器TMOD设置:控制寄存器TCON设置:设定计数初值: 定时器四种工作方式:实验过程讲解:配置定时器:设置TMOD寄存器设定定时器初值:THx和TLx(x=0,1)设置IE寄存器:启动定时器:中断检测:题目:使用51单片机的定时器/计数器T1控制LED每隔3秒点亮一次(即亮3秒,灭3秒,如此反复)proteus仿真: 本实验涉及的Proteus文件以及程序源码均在Github上免费下载https://github.com/iceacream/C_CODE.git代码:#includesbitLED1=P1^5;chari=100

c++ - 如何访问/修改 OpenCV 中的矩阵元素?为什么 at() 被模板化?

我应该知道Mat元素类型以正确使用at()吗?例如,如果我有Matrose=Mat(1,180,CV_64F,0);那我可以打电话吗rose.at(i,j)++;如果不是,那么我应该使用哪个模板参数?为什么Mat::at是模板化的而Mat本身不是?更新这个问题包含带有另一个错误的示例代码,现在在这里:HowtofillMatrixwithzerosinOpenCV? 最佳答案 正如William已经正确指出的那样,您应该只提供正确的类型作为at的模板参数。我相信cv::Mat本身并不是为了简化而制作的模板。然而,OpenCV工作人员

c++ - PE : Adding code at the end of . txt 部分

据我所知,在PE文件中,VirtualSize显示加载期间为部分分配的空间大小,RawSize显示该部分在磁盘上的大小。我遇到了这个执行以下操作的可执行文件:它从原始数据大小(offset0x10)中减去虚拟大小(offset0x8)并确保有一些空间(例如100字节)。在文本部分标题的偏移量0x14处,它找到了该部分本身在文件中的偏移量。它将虚拟大小添加到此,找到该部分在文件中结束的位置。它复制了一些shellcode(最终跳转到可执行文件的原始入口点以确保原始可执行文件运行)到二进制文件文本部分的末尾。现在我在这里有点困惑,如果虚拟大小显示将分配给可执行文件的确切空间,不会在.txt