草庐IT

临时表

全部标签

c++ - 在访问 vector<bool> 中的元素地址时获取临时地址

我仅在访问boolvector中的元素地址时收到警告。对于int等其他数据类型的vector,我不会收到任何警告。例如vectorboolVect;boolVect.push_back(false);if(boolVect.size()>0){cout我在声明“cout有人可以澄清一下吗? 最佳答案 std::vector坏了(参见例如http://www.informit.com/guides/content.aspx?g=cplusplus&seqNum=98或Alternativetovector)。它是std::vector

c++ - 返回 const 引用与临时对象

我想知道为什么返回本地对象的constreference是非法的,而返回localobject是合法的,只要你将它分配给const引用?vectorf_legal(){vectortempVec;tempVec.push_back(1);returntempVec;}constvector&f_illegal(){vectortempVec;tempVec.push_back(1);returntempVec;}voidg(){constvector&v1=f_legal();//legalconstvector&v2=f_illegal();//illegal}编辑:我的观点是,如果

c++ - 如何配置 ImageMagick 不使用任何临时文件?

我试图在不接触文件系统的情况下运行ImageMagick:图像数据从内存/网络读取,并作为blob写回套接字.但是,ImageMagick不断尝试写入临时文件,这些文件要么由于测试中止/失败而填满我的测试系统,要么在磁盘极慢的系统上导致问题:这是一个奇怪的限制,但我的许多转换主机都是嵌入式的-类似block设备的系统,极度对任何操作的响应都非常慢,甚至stat()s。问题:有没有一种方法可以将ImageMagick配置为在图像处理期间不接触磁盘?假设ImageMagick将使用的所有必需模块都已经加载,并且没有任何ImageMagick功能将处理外包给子进程与文件系统对话将被使用。这样

c++ - 保证检测临时->命名点

假设你写了一个带有一些操作的矩阵类:classmatrix{public:doubleoperator()(size_ti,size_tj)const;...};matrixoperator*(constmatrix&lhs,constmatrix&rhs);...延迟某些矩阵表达式的计算是有意义的:m0*m1*m2*m3*m4(这是一系列的四个operator*调用)可以受益于使用dynamic-programmingmatrixchainmultiplicationalgorithm;非常常见的m0*m1t有一个veryefficientdgemmimplementation,等等

c++ - 防止临时延长其生命周期?

这可能是不可能的,但我想知道是否有可能让一个临时的东西永远不会超过它原来的表达方式。我有一个指向父对象的对象链,以及一个将创建子对象的成员函数,这里是一个简化的示例classperson{stringname;person*mommy;public:person(conststring&nam,person*m=0):name(nam),mommy(m){}personbaby(conststring&nam){returnperson(nam,this);}voidtalk()const{if(mommy)mommy->talk();cout我想使用person的方式是将它传递给一个

模板中的 C++ 右值临时变量

能否请您解释一下以下机制之间的区别:intfunction();templatevoidfunction2(T&);voidmain(){function2(function());//compilererror,instantiatedasint&constint&v=function();function2(v);//okay,instantiatedasconstint&}关于实例化,我的推理是否正确?为什么不首先实例化为constT&?谢谢 最佳答案 因为function返回一个非常量值。只有对象可以是const,因为它们存

c++ - 在 C++ 中使用临时对象作为默认参数是否安全?

例如:intStrLen(conststd::string&s="defaultstring"){conststd::string&t="anotherstring";//BTW,isthislinesafe?returns.size();}更新SoapBox的结论是正确的,但理由并不完全正确。thelifetimeofthetemporaryisautomaticallyextendedtobethesameasthereferencethatholdsit.这通常是正确的,但有几个异常(exception)。一个是"Atemporaryboundtoareferenceparame

c++ - 什么是 C++ 临时对象?

我正在阅读Eckel中的常量章节,并在解释临时变量的部分混淆了。我能得到的是,当我们将引用传递给函数时,编译器会创建一个临时对象,它是一个const对象,因此即使我们将引用传递为f(int&a){}现在我试图在网上查看其他一些关于Temporaries的引用资料,但被卡住了http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fcplr382.htm和ArealltemporariesrvaluesinC++?这提

c++ - 在锁下清除 std::map 与移动到临时对象

我正在使用std::map并且其中有大量元素。如果我需要清除map,我可以在上面调用clear()。清除可能需要一些时间,特别是如果在多线程环境中的锁定下完成,它可能会阻止其他调用。为了避免调用clear(),我尝试了这个:std::mutexm;std::mapmy_map;//themapwhichIwanttoclearvoidfunc(){std::maptemp_map;{std::lock_guardl(m);temp_map=std::move(my_map);}}这会将my_map移动到锁下的temp_map,这将清空它。然后一旦func结束,temp_map将被销毁。

c++ - 引用是否绑定(bind)到临时未定义行为的临时?

在下面的代码片段中,球体的生命周期是否以r的值不是未定义的方式延长?structSphere{auto&radius()const{return_radius;}float_radius{};};structCapsule{autosphere()const{returnSphere{12.0};}};autofunc(){autocapsule=Capsule{};constauto&r=capsule.sphere().radius();std::cout我知道const-references会延长临时对象的生命周期,但我不确定如果临时对象的成员被绑定(bind)会发生什么情况。注