草庐IT

int_types

全部标签

c++ - 为什么int&a=10;在古代 C++ 编译器中有效吗?

我只是想知道为什么像Turboc++3.0(蓝屏IDE)和BorlandTurboC++4.5等古老的编译器在下面的程序中没有报告任何错误。#includeintmain(){int&a=10;cout上述程序不会被现代C++编译器接受,但为什么古代编译器允许这样做呢?他们只是在上面的程序中显示单个警告。 最佳答案 它曾经是有效的C++将引用绑定(bind)到临时对象,因此您可以通过例如double到需要int&的函数,如TheDesign&EvolutionofC++中所述§3.7:Imadeoneseriousmistake,t

c++ - #define for(int z=0;z<2;++z)for(int z=0;z<2;++z)for 中的第三个 'for' 是什么意思

我在一个C++程序中找到了一段代码,好像每隔for()循环两次。在这个程序中循环,但为什么在这样的预处理器定义中需要第三个for呢?#defineforfor(intz=0;z 最佳答案 它取代了for与for(intz=0;z.显然,那会变成for(inti=0;i进入for(intz=0;z因此创建了两个嵌套循环。没有那个额外的for会是for(intz=0;z这显然是不正确的。请注意,即使您在问题中提供的形式是“正确的”,但这并不意味着它是“良好做法”。这是过度滥用宏的示例,必须避免。这是它可能出错的众多示例之一:for(in

c++ - 用户定义类型的 std::common_type 特征

自C++11以来,引入了类型特征std::common_type。std::common_type确定其所有模板参数之间的公共(public)类型。在C++14中,还引入了辅助类型std::common_type_t以缩短使用std::common_type类型特征的代码。std::common_type在重载算术运算符中特别有用,例如,templatestd::common_type_toperator+(T1const&t1,T2const&t2){returnt1+t2;}如果它的模板参数是内置类型(例如,int、double),它会工作得很好。但是,如果我将用户定义的类型作为模

c++ - 错误 LNK2019 未解析的外部符号 _WinMain@16 在函数 "int __cdecl invoke_main(void)"(?invoke_main@@YAHXZ) 中引用

这是我的剧本我不知道如何解决这个错误请帮我非常感谢floatangle=15;floatx,y,z;//forpolygonrotatevoiddisplay(){glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);//clearscreenanddepthbufferglLoadIdentity();glPushMatrix();glColor3f(1.0,0.0,0.0);glBegin(GL_POLYGON);glVertex2f(160.0,360.0);glVertex2f(300.0,360.0);glVertex2f(160.

c++ - C++中的哈希函数,用于将字符串转换为int

我正在寻找C++中的散列函数以将字符串散列为int。我使用了CMapStringToPtr,但它有一个名为“GetNextAssoc”的函数,允许以字符串形式检索key,这意味着必须存储该字符串并且它会占用大量内存。是否有任何其他哈希函数获得更少的内存并且不存储字符串? 最佳答案 C++有一个用于此目的的内置哈希函数-它用于所有STL哈希容器。std::hashPS:你也可以自己制作,只需通过const引用传递字符串,然后一个一个地循环遍历它的字符,将它们添加到一个整数,然后用某个值进行mod:)

c++ - 无法将参数 1 从 'cli::interior_ptr<Type>' 转换为 'CvCapture **'

我正在抓取一个视频帧如下CvCapture*capture=cvCreateFileCapture("PATH");我可以阅读视频并处理它。一切正常。但是当我尝试释放捕获时cvReleaseCapture(&capture);我明白了errorC2664:'cvReleaseCapture':cannotconvertparameter1from'cli::interior_ptr'to'CvCapture**'with[Type=CvCapture*]Cannotconvertamanagedtypetoanunmanagedtype函数在一个类中。publicrefclassLoc

c++ - 将对象显式类型转换为 int *

以下C++代码的输出是什么?#includeusingnamespacestd;classIndiaBix{intx,y;public:IndiaBix(intxx){x=++xx;}~IndiaBix(){cout我没看懂下面这行::int*p=(int*)&objBix;//Explicittypecastofaclassobjecttointegerpointertype 最佳答案 可以将(标准布局类型的)对象指针转换为指向其第一个成员的指针。这是因为可以保证标准布局对象的第一个成员与整个对象具有相同的地址:c++119.2C

c++ - 如何将 "point of declaration"解释为 "const int i=2; { int i[i]; }"- C++ 标准中的示例?

我正在研究C++标准以了解操作顺序、表达式、语句和副作用。一个相关的问题是名称的“声明点”。在C++11标准的§3.3.2.1节中,该标准规定:Thepointofdeclarationforanameisimmediatelyafteritscompletedeclarator(Clause8)andbeforeitsinitializer(ifany)...以下段落添加了带有示例的注释:Note:anamefromanouterscoperemainsvisibleuptothepointofdeclarationofthenamethathidesit.……举个例子constin

c++ - 我可以在 vector 的一个实例上使用 value_type,而不是它的类型吗

在播放和尝试计算vector的总大小时,我尝试了类似的方法vectorvd;autoarea=vd.size()*sizeof(vd::value_type);//IveseenStepanovuseareaasnameforthiskindofsize,idkifheaddsthesizeofvdalsotoarea:)不幸的是,这不起作用......我需要使用vector::value_type但这会降低代码的可读性。它可以工作吗?我不喜欢sizeofvd.front()因为写front()看起来很难看为此。编辑:decltype变体也适合我所说的丑陋类别......

c++ - 容器模板参数的 value_type

在他今年GoingNative的主题演讲中TheEssenceofC++(转到40:30)BjarneStroustrup给出了以下代码示例:templatevector*>find_all(C&cont,Vv){vector*>res;for(auto&x:cont)if(x==v)res.push_back(&x)returnres;}此函数用于查找容器中所有出现的值并返回指向找到的元素的指针。视频中的示例:stringm{"Maryhadalittlelamb"};for(constautop:find_all(m,'a'))//pisachar*if(*p!='a')cerr我