草庐IT

const_buffers

全部标签

C++11 基于范围的 for 循环效率 "const auto &i"与 "auto i"

在C++11中,我可以像这样迭代一些容器:for(autoi:vec){std::cout但我知道这是不必要的-不必要,因为我只需要打印vec的值-复制(EDIT:vec的每个元素,所以我可以这样做:for(auto&i:vec){std::cout但我想确保vec的值永远不会被修改并遵守const-correctness,所以我可以这样做:for(constauto&i:vec){std::cout所以我的问题是:如果我只需要查看某个容器的值,那么最后一个循环(constauto&i)是否总是首选由于没有额外的(EDIT:eachelementof)vec?拷贝提高了效率我正在开发一

c++ - C++ 中成员函数的 const& 、 & 和 && 说明符

最近我正在阅读APIofboost::optional并遇到了以下问题:Tconst&operator*()const&;T&operator*()&;T&&operator*()&&;我还编写了自己的程序,将成员函数定义为const&、&和&&(请注意,我不是在谈论返回类型,而是在分号之前的说明符),它们似乎工作正常。我知道声明一个成员函数const意味着什么,但谁能解释一下声明它是什么意思const&、&和&&。 最佳答案 const&表示,这个重载将只用于const、non-const和lvalue对象。constAa=A()

c++ - 我想将 std::string 转换为 const wchar_t *

有什么方法吗?我的电脑是AMD64。::std::stringstr;BOOLloadU(constwchar_t*lpszPathName,intflag=0);我用的时候:loadU(&str);VS2005编译器说:Error7errorC2664::cannotconvertparameter1from'std::string*__w64'to'constwchar_t*'我该怎么做? 最佳答案 先转换成std::wstring:std::wstringwidestr=std::wstring(str.begin(),str

c++ - 模板元编程 - 使用 Enum Hack 和 Static Const 的区别

我想知道在使用模板元编程技术时使用静态const和enumhack有什么区别。EX:(通过TMP斐波那契)templatestructTMPFib{staticconstintval=TMPFib::val+TMPFib::val;};templatestructTMPFib{staticconstintval=1;};templatestructTMPFib{staticconstintval=0;};对比templatestructTMPFib{enum{val=TMPFib::val+TMPFib::val};};templatestructTMPFib{enum{val=1};

c++ - 'auto const' 和 'const auto' 是一样的吗?

autoconst和constauto之间是否存在语义差异,或者它们的意思是一样的? 最佳答案 const限定符适用于紧靠左边的类型,除非左边没有任何东西,然后它适用于紧靠右边的类型。所以是的,它是一样的。 关于c++-'autoconst'和'constauto'是一样的吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/10709897/

c++ - 为什么有些人更喜欢 "T const&"而不是 "const T&"?

所以,我意识到constT&和Tconst&是相同的,并且都表示对constT的引用。在这两种情况下,引用也是常量(引用与指针不同,不能重新分配)。根据我有限的经验,我观察到大多数C++程序员使用constT&,但我遇到过一些使用Tconst&的人。我使用constT&只是因为我是这样学习的,所以Tconst&对我来说看起来有点好笑。您使用您使用的变体的原因是什么?你们中是否有人在编码标准要求使用一种变体而不是另一种变体的组织工作?编辑根据答案,似乎在两者之间进行选择的一个原因是您是想像编译器(从右到左)还是像英语(从左到右)一样阅读它。如果像编译器一样读取它,那么“Tconst&”将

c++ - 什么时候 const 引用比 C++11 中的按值传递更好?

我有一些C++11之前的代码,我在其中使用const引用来传递像vector这样的大参数。一个例子如下:inthd(constvector&a){returna[0];}听说使用新的C++11功能,您可以按如下方式按值传递vector而不会影响性能。inthd(vectora){returna[0];}例如,thisanswer说C++11'smovesemanticsmakepassingandreturningbyvaluemuchmoreattractiveevenforcomplexobjects.上述两个选项在性能方面是否相同?如果是这样,什么时候使用选项1中的const引用

c++ - const 在 C/C++ 中提供什么样的优化?

我知道,出于可读性原因,您应该在通过引用或指针传递参数时尽可能使用const关键字。如果我指定一个参数是常量,编译器是否可以做任何优化?可能有几种情况:功能参数:常量引用:voidfoo(constSomeClass&obj)常量SomeClass对象:voidfoo(constSomeClass*pObj)还有指向SomeClass的常量指针:voidfoo(SomeClass*constpObj)变量声明:constinti=1234函数声明:constchar*foo()每个都提供什么样的编译器优化(如果有的话)? 最佳答案

c++ - C++ 中 const 重载有什么用?

在C++中,函数的签名部分取决于它是否为const。这意味着一个类可以有两个具有相同签名的成员函数,除了一个是const而另一个不是。如果你有一个这样的类,那么编译器将根据你调用它的对象来决定调用哪个函数:如果它是类的const实例,将调用函数的const版本;如果对象不是const,则将调用另一个版本。您希望在什么情况下使用此功能? 最佳答案 这只有在成员函数返回一个指针或对类的数据成员(或成员的成员,或成员的成员,...等)的引用时才有意义。通常不赞成返回非常量指针或对数据成员的引用,但有时它是合理的,或者只是非常方便(例如[]

c++ - 为什么 'operator>' 需要 const 而 'operator<' 不需要?

考虑这段代码:#include#include#include#includeusingnamespacestd;structMyStruct{intkey;std::stringstringValue;MyStruct(intk,conststd::string&s):key(k),stringValue(s){}booloperatorvec;vec.push_back(MyStruct(2,"is"));vec.push_back(MyStruct(1,"this"));vec.push_back(MyStruct(4,"test"));vec.push_back(MyStruc