草庐IT

c++ - 错误 "requested alignment is not an integer constant"

我在解决GCC问题时遇到问题。我在GCC4.8下体验过它,但不是5.1。看起来它被报道了here和/或here.问题如下:templatestructS{staticconstintALIGN=16;__attribute__((aligned(ALIGN)))intx;};intmain(intargc,char*argv[]){Ss1;Ss2;return0;}和:$g++test.cxx-otest.exetest.cxx:9:41:error:requestedalignmentisnotanintegerconstant__attribute__((aligned(ALIGN

c++ - 在 C++ 中存储一组坐标集(成对 vector 的 vector ?)

首先,我是C++的新手,所以我可能不得不深入研究伪代码和/或Python来解释我正在尝试做的事情...我正在尝试为动画的每一帧存储多个Sprite的X和Y坐标对。我设想这类似于以下内容-假设PLAIN==1(使用枚举):animationFrames[PLAIN][0]={20,50}animationFrames[PLAIN][1]={25,55}等等。我基本上希望能够使用相关Sprite的ID查询animationFrames并接收一组X、Y坐标以进行迭代。我发现这很棘手。这是我的尝试,但没有用...std::vector>>frames={{{1,1},{2,2}//twofra

C++。为什么 std::cout << char + int 打印 int 值?

比方说,我们有:charx='a';inty=1;所以,如果你运行:std::cout它打印98而不是'b'。正如我从here看到的那样只有int参数实现。从现在开始我有两个问题:char+int操作后返回什么类型?为什么没有char参数实现,而是std::cout仍然按预期工作并打印char值? 最佳答案 感谢Fefux,BoPersson和MattiVirkkunen答案是:来自CPPReference:Implicitconversions:arithmeticoperatorsdonotaccepttypessmallert

c++ - 在编译时解析 (u)int_fastX_t

C++标准typedef的实现将(u)int_fastX类型定义为其内置类型之一。这需要研究哪种类型最快,但不可能对每种情况都有一种最快的类型。在编译时解析此类类型以通过为实际使用选择最佳类型来解决这种情况是否会提高性能?编译器会分析_fast变量的使用,然后选择最佳类型。发挥作用的因素可能是对齐方式和变量使用的操作类型。这将有效地使这些类型成为一种语言特性。当编译器突然决定为这样的变量选择另一个宽度时,这可能会引入错误。但是在这种用例中不应该使用_fast类型,无论如何,行为取决于宽度。标准允许这样的编译时解析吗?如果是,为什么到今天还没有实现?如果不是,为什么不在标准中?

c++ - C++中的自动引用

这段代码在visualstudio2015中给我奇怪的调试信息intmain(){constinti=42;autoj=i;constauto&k=i;auto*p=&i;constautoj2=i,&k2=i;}生成的类型是:&k=constint&&k2=constint*我认为它们都应该是constint&。问题是,为什么我的VisualStudio调试器说&k和&k2是不同的类型? 最佳答案 k和k2都是constint&类型。这是完整的类型列表。请注意,顶级const为auto丢弃类型推导。intmain(){consti

c++ - 递归函数是否比非递归函数慢

我对数字的阶乘和斐波那契数列(在C++中完成)使用了递归函数,我发现关于阶乘的递归函数运行正常,执行速度与预期相差不大。然而,在斐波那契数列上,它绝对是缓慢的。为什么会这样?递归方法:unsignedlongintfib_num(intn)//ThisisMycode{switch(n){case1:return0;break;case2:return1;break;default:returnfib_num(n-1)+fib_num(n-2);break;}}迭代方法:first=0;second=1for(i=0;i 最佳答案

c++ - 使用智能指针制作哈希表?

我正在尝试使用智能指针制作哈希表,但我不确定我做的是否正确。我一直在尝试使用它们的两种组合,但恐怕我不知道如何将表格初始化为空?也许这是错误的措辞,但我被卡住了,我需要指出正确的方向。我的哈希节点:struct{hashNode(intk,std::stringi):key(k),item(i){};intkey;std::stringitem;}我的哈希表:classHashtable{public:Hashtable();//notsurehowtobuildtheconstructorbuildanemptytable.inthashFunction(intkey);intfin

C++友元类和友元成员函数

我正在学习C++类中的友元函数、友元类和友元成员函数;现在,以下代码可以正常编译:#includeclassA{public:friendclassB;//friendvoidB::set(inti);//friendintB::get();friendintfunction(Aa);A(inti);voidset(inti);intget();private:inti;};A::A(inti):i(i){}voidA::set(inti){this->i=i;}intA::get(){returni;}classB{public:B(Aa);voidset(inti);intget(

c++ - Stroustrup 书中的前后条件

在《编程:使用C++的原理与实践》的第5.10.1章中,有一个“试试这个”练习,用于调试某个区域的错误输入。前置条件是长度和宽度的输入是否为0或负数,而后置条件是检查面积是否为0或负数。引用这个问题,“找到一对值,使得这个版本的area的前置条件成立,但后置条件不成立。”。到目前为止的代码是:#include#include"std_lib_facilities.h"intarea(intlength,intwidth){if(length>a>>b){std::cout虽然代码似乎有效,但我无法确定哪些输入将使前置条件成功但会触发后置条件。到目前为止,我已经尝试在其中一个输入中输入字

属于模板类的成员模板的 C++ 显式特化

在目前的C++标准草案中,thisparagraph中就有这个例子属于与模板的显式特化相关的部分:templatestructA{voidf(T);templatevoidg1(T,X1);templatevoidg2(T,X2);voidh(T){}};//specializationtemplatevoidA::f(int);//outofclassmembertemplatedefinitiontemplatetemplatevoidA::g1(T,X1){}//membertemplatespecializationtemplatetemplatevoidA::g1(int,X