草庐IT

z-Score标准化

全部标签

c++ - 我们应该使用标准库中的异常类型吗?

C++标准库定义了一些异常类型,如std::exception、std::bad_alloc和std::logic_error。我们是否应该或允许在我们自己的代码中使用它们?让我们举一个具体的例子。我们定义了一个Array类型,它包含固定数量的int并在“超出范围”访问时抛出std::out_of_range.它有一个成员函数Array::operator[](size_ti),定义如下:int&Array::operator[](size_ti){if(i>=size)throwstd::out_of_range({"outofrange"});returnarray[i];}我认为

c++ - 为什么标准没有提供 erase-remove-idiom 的便利助手?

从STL中的集合中删除项目需要一种经常使用的技术,该技术已成为一种习语:theerase-remove-idiom这个习语最常见的用法之一是删除T类型的项目来自vectorstd::vectorwidget_collection;Widgetwidget;widget_collection.erase(std::remove(widget_collection.begin(),widget_collection.end(),widget),widget_collection.end());这显然非常冗长,并且违反了DRYprinciple-有问题的vector在那里需要4次。所以我的问

c++ - 迭代器是否需要按照标准包含来自容器的任何类型信息?

今天我遇到了this问题并开始怀疑gcc/clang和VisualStudio之间的不一致。这个问题本身很笼统,但我仍然想了解-标准是否对迭代器类型是否应该包含任何容器特定类型信息强加了任何规则。考虑这个片段:#include#includestructhash1{size_toperator()(intkey)const{returnkey;}};structhash2{size_toperator()(intkey)const{returnkey+1;}};intmain(intargc,char**argv){std::unordered_mapmap1;map1[1]=1;st

c++ - boost::shared_ptr<string> 标准集

我有一组boost::shared_ptr,我希望它不是通过共享指针而是通过字符串来排序和唯一化的。我是否必须提供一个新的比较函数来获取共享指针并比较内容,或者已经存在我可以使用的比较器? 最佳答案 这非常具体,因此您可能需要一个自定义比较器。这应该有效:structpointercompare{booloperator()(constboost::shared_ptr&a,constboost::shared_ptr&b){return(*a)>(*b);}} 关于c++-boost:

c++ - 是否有标准的静态函数包装器类型模板?

我正在寻找一个标准的C++14类型模板,它静态地(在编译时)嵌入一个函数引用作为模板参数,并将operator()实现为对引用函数的转发调用.我知道std::function存在,但它存储一个函数指针作为数据成员。我希望将函数引用嵌入到类型签名中,以便包装器类型为空和默认构造。我有一个有效的实现(带有示例用例):#include#include#include//Implementation:templatestructfn_t{templatestructfn_ref{Retoperator()(Args&&...args)const{returnFunc(std::forward(

c++ - 标准库predefined 'user-defined' literal "m"是在哪里定义的?

我在浏览C++CoreGuidlines时偶然发现了以下示例文档:Examplechange_speed(doubles);//bad:whatdoesssignify?//...change_speed(2.3);Abetterapproachistobeexplicitaboutthemeaningofthedouble(newspeedordeltaonoldspeed?)andtheunitused:change_speed(Speeds);//better:themeaningofsisspecified//...change_speed(2.3);//error:nouni

嵌入式-Stm32-江科大基于标准库的GPIO4个小实验

文章目录一、硬件介绍二、实验:LED闪烁、LED流水灯、蜂鸣器提示2.1需求1:面包板上的LED以1s为周期进行闪烁。亮0.5s,灭0.5s.....2.2需求2:8个LED实现流水灯2.3需求3:蜂鸣器不断地发出滴滴、滴滴.....的提示音。蜂鸣器低电平触发。三、硬件介绍-按键开关、光敏电阻四、实验按键控制LED、光敏传感器控制蜂鸣器4.1需求1:一个按键开关控制一个LED,每次按下按键,LED就改变自己的亮灭状态;两套系统互不影响4.2需求2:光敏电阻被遮挡,蜂鸣器长鸣,光敏电阻不被遮挡,蜂鸣器不响。道友:蹉跎者光阴如梭,有志者岁月如歌核心:本文共4个小实验:第一个:LED灯闪烁第二个:L

c++ - char[](c-string) 的初始化标准

考虑以下代码:intmain(){charhi[5]="Hi!";printf("%d",hi[4]);}将打印什么?更重要的是,在最新C++标准中,标准中是否提及将打印的内容?如果有提及,它在哪里?由于某种原因,很难找到关于此的最新信息,而且各种来源的信息相互矛盾。我试过en.cppreference.com和cplusplus.com,前者没有任何信息,后者声称值未确定。然而,usingnamespacestd;intmain(){charmySt[1000000]="Hi!";for(inti=0;i这在我的系统上只打印0、1和2,所以我希望“rest”被初始化为“\0”。另外据

c++ - 为什么嵌套函数的想法没有在旧的 C++ 标准中实现?

嵌套函数的想法在开发旧的c++标准时被认为是无用的,因为它的用法基本上被另一个概念涵盖,如面向对象编程;或者它不是为了简化而实现的? 最佳答案 嵌套函数-有用-需要包含函数的堆栈帧作为上下文。看看这个:classFoo(){voidTripulate(){inti=0;voidDip(){//...}intx=12;for(i=1;iDip()应该访问哪些值?没有?您刚刚或多或少地复制了(匿名)namespace的功能。只对i,因为它是函数之前定义的唯一一个?只对i和x,因为它们在Dip()的相同范围内?编译器是否必须确保x的构造函

c++ - 当我使用 win32 SendMessage 发送和转换标准字符串时,我得到了奇怪的字符

我需要将文本附加到win32编辑控件我有执行此操作的功能,但在编辑控件中打印的文本是乱码,为什么?示例代码取自here的Microsoft示例voidsettext(HWNDhDlg,std::strings){//std::wstringws;//ws.assign(s.begin(),s.end());//LPWSTRpwst=&ws[0];////gettemporaryLPCWSTR(prettysafe)//LPCWSTRpcwstr=ws.c_str();//SetDlgItemText(hWndEdit,IDC_EDIT1,pcwstr);HWNDhWndEdit=Get