草庐IT

automatic-ref-counting

全部标签

c++ - 为什么 lambda 会删除 cv 和 ref?

给定一个lambda:autof=[](constT&var){returnvar;};为什么f的返回类型是T(不是constT&)?这在标准中的什么位置? 最佳答案 重点是:使用auto进行返回类型推导采用模板类型推导规则。返回类型被声明为按值传递;这意味着用于推导的表达式的引用性和顶级cv限定符(即var)将被忽略。标准引述:关于auto:Iftheplaceholderistheautotype-specifier,thededucedtypeT'replacingTisdeterminedusingtherulesforte

c++ - std::string& 与 boost::string_ref

如果我在std::string&上使用boost::string_ref还重要吗?我的意思是,在处理字符串时,使用boost::string_ref真的比std版本更有效吗?我真的不明白这里提供的解释:http://www.boost.org/doc/libs/1_61_0/libs/utility/doc/html/string_ref.html.真正让我感到困惑的是std::string也是一个仅指向分配内存的句柄类,并且自c++11以来,具有移动语义的复制操作在上面的文章中提到不会发生。那么,哪个更有效? 最佳答案 strin

c++ - 这个 bitset::count() 的实现是如何工作的?

下面是std::bitset::count与MSVC2010的实现:size_tcount()const{//countnumberofsetbitsstaticchar_Bitsperhex[]="\0\1\1\2\1\2\2\3\1\2\2\3\2\3\3\4";size_t_Val=0;for(int_Wpos=_Words;0>=4)_Val+=_Bitsperhex[_Wordval&0xF];return(_Val);}有人可以向我解释这是如何工作的吗?_Bitsperhex有什么诀窍? 最佳答案 _Bitsperhex

c++ - std::ref 和 swap 函数似乎不能很好地协同工作

templatevoidmyswap(Ta,Tb){Ttemp=a;a=b;b=temp;}intmain(){intm(20),n(30);myswap(ref(m),ref(n));//misstill20andnisstill30}为什么m和n的值没有互换?将包装在std::ref中的值传递给INCREMENT函数会导致原始变量(调用INCREMENT函数的堆栈帧中的变量)中的值发生变化。或者,std::ref的使用是否受到限制? 最佳答案 std::ref(及其关联的std::reference_wrapper)是为标准库中

c++ - 为什么没有给 std::forward_list 一个 count() 成员函数?

我明白为什么std::forward_listdoesnothaveasize()memberfunction,因为O(1)版本会搞乱某些splice()的复杂性过载,并且由于O(N)version将与标准库的所有其他容器不一致。这也是事实std::list和std::forward_list已经有几个其他成员函数与中的表亲具有相同的语义标准库的一角(merge()、reverse()、remove()、remove_if()、unique()、sort())。那么为什么不是count()O(N)的成员函数提供给std::forward_list的复杂性具有返回std::distanc

c++ - 我可以在不更改 use_count 的情况下将 shared_ptr<T> & 转换为 shared_ptr<T const> & 吗?

我有一个使用boost::shared_ptr的程序s,特别是依赖于use_count的准确性执行优化。例如,假设一个加法运算有两个参数指针lhs和rhs。假设他们都有类型shared_ptr.当需要执行加法时,我会检查use_count,并且如果我发现其中一个参数的引用计数恰好为1,那么我将重新使用它来就地执行操作。如果两个参数都不能重用,我必须分配一个新的数据缓冲区并执行异地操作。我正在处理庞大的数据结构,因此就地优化非常有用。因此,我永远无法复制shared_ptr没有理由,即每个函数都采用shared_ptrs通过引用或const引用以避免扭曲use_count.我的问题是:我

【记录】记一次关于前端单元测试的全英文问卷调查( Survey: Automatically Generated Test Suites for JavaScript)

文章目录OPENINGSTATEMENTBackgroundTaskbackground:FixthefailingtestcasesBeforethetask:Task:FixthefailingtestcasesTask:ExecutableDocumentationBeforethetask:BonusOpportunity:OnemoretaskTask:TestCasesClusteringRewardThankYou!原地址:Survey:AutomaticallyGeneratedTestSuitesforJavaScriptOPENINGSTATEMENTYouarebeing

c++ - 显式默认/删除的函数可以在 ref 限定符上重载吗?

简介Refqualifiers:一种消除隐含对象的rl-valuness歧义的方法。作为一个简单的例子,以下面的类为例classexample{intmember;public://...int&value()&;//^int&&value()&&;//^^intconst&value()const&;//^};使用此C++11功能(用^标记的语法),允许我们控制将用value()的版本p>左值临时工常量左值实际上ref限定适用于类的*thisDefaulted/Deletedfunctions:将一个特殊成员函数指定为编译器生成(默认)定义或不可访问(删除)。举个例子structty

c++ - 拥有一个 ref 类型的类成员的目的是什么?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。我有这段代码,但它不是一个实际的例子。例如classAnimal{inti;int&ref;public:Animal():ref(i){}};任何人都可以提供一个现实生活中需要ref作为类(class)成员的例子,以便我更好地理解它吗?

c++ - std::search 是否有一个函数类似于 std::count 对 std::find 的函数?

如果标题听起来很奇怪,这里有另一种解释:如果我有一个范围a,我想计算另一个范围b在范围a中出现了多少次,是否有一个std::函数来做呢?如果不是,是否有一种简单的方法(当然我可以使用std::search手动循环-我说的是更优雅的东西)? 最佳答案 我认为您需要构建自己的。以下是我想到的实现方式。templatesize_tsubsequence_count(Iterator1haystack_begin,Iterator1haystack_end,Iterator2needle_begin,Iterator2needle_end)