草庐IT

const_buffers

全部标签

c++ - int vs const int&

关闭。这个问题是opinion-based.它目前不接受答案。想改善这个问题吗?更新问题,以便可以通过editingthispost用事实和引文回答问题.10个月前关闭。Improvethisquestion我注意到我通常使用常量引用作为返回值或参数。我认为原因是它的工作原理与在代码中使用非引用几乎相同。但它肯定需要更多空间并且函数声明变得更长。我可以接受这样的代码,但我认为有些人认为这是一种糟糕的编程风格。你怎么看?在int上写constint&值得吗?我认为它无论如何都是由编译器优化的,所以也许我只是在浪费时间编码它,一个? 最佳答案

c++ - C 与 C++ 中的 const 正确性

我了解const正确性的含义,我的问题不是关于const正确性是什么。所以我不期待对此的解释或C++-FAQ链接。我的问题是:C中的const和C++中的const在语义上有什么区别?和造成差异的原因是什么?如果能引用各自标准中的引述来明确差异,那就太好了。我经常在C和C++之间切换,我想知道在此过程中应该牢记的要点。我似乎不记得这些的原因(如果你能提供一个推理,特别感谢),但从我的脑海中,我记得:C++中的const变量默认有内部链接,而C中它们有默认的外部链接;const对象在C++中可以用作编译时值,但在C中不能用作编译时值;指向字符串文字的指针在C++中必须是charconst

c++ - 为什么 `const T&` 不确定是 const?

templatevoidf(Ta,constT&b){++a;//ok++b;//alsook!}templatevoidg(Tn){f(n,n);}intmain(){intn{};g(n);}请注意:b是constT&且++b没问题!为什么constT&不一定是const? 最佳答案 欢迎使用const和referencecollapsing.当您有constT&时,引用将应用于T,const也是如此。你调用g喜欢g(n);所以你已经指定T是一个int&。当我们将一个引用应用到一个左值引用时,两个引用合并为一个,所以int&&变

c++ - 使用 const 非整数指数优化 pow()?

我正在做的代码中有热点pow()占用我大约10-20%的执行时间。我对pow(x,y)的输入非常具体,所以我想知道是否有办法滚动两个pow()具有更高性能的近似值(每个指数一个):我有两个常数指数:2.4和1/2.4。当指数为2.4时,x将在(0.090473935,1.0]范围内。当指数为1/2.4时,x将在(0.0031308,1.0]范围内。我正在使用SSE/AVXfloatvector。如果可以利用平台特性,那就对了!大约0.01%的最大错误率是理想的,尽管我对全精度(对于float)算法也很感兴趣。我已经在使用快速pow()approximation,但它没有考虑这些约束。有

c++ - 如何在 C++ 中初始化静态 const 成员?

是否可以在构造函数之外初始化静态常量值?可以在找到成员声明的地方初始化吗?classA{private:staticconstinta=4;/*...*/}; 最佳答案 可以,但仅限于int类型。如果您希望您的静态成员是任何其他类型,则必须在cpp文件中的某处定义它。classA{private:staticconstinta=4;//validstaticconststd::stringt;//can'tbeinitializedhere......};//inacppfilewherethestaticvariablewille

c++ - 为什么不允许使用静态 const float ?

这个问题在这里已经有了答案:Whycan'tIhaveanon-integralstaticconstmemberinaclass?(5个回答)关闭3个月前。我有一个类,它本质上只是包含一堆通过我的应用程序使用的常量定义。出于某种原因,longs编译但floats不编译:classMY_CONSTS{public:staticconstlongLONG_CONST=1;//CompilesstaticconstfloatFLOAT_CONST=0.001f;//C2864};给出以下错误:1>c:\projects\myproject\Constant_definitions.h(71

java - Java 中 Protocol Buffer 分隔的 I/O 函数是否有 C++ 等效项?

我正在尝试从C++和Java文件中读取/写入多个ProtocolBuffer消息。谷歌建议在消息之前写长度前缀,但默认情况下没有办法这样做(我可以看到)。但是,2.1.0版中的JavaAPI收到了一组“定界”I/O函数,它们显然可以完成这项工作:parseDelimitedFrommergeDelimitedFromwriteDelimitedTo有C++等价物吗?如果没有,JavaAPI附加的大小前缀的有线格式是什么,以便我可以在C++中解析这些消息?更新:这些现在存在于google/protobuf/util/delimited_message_util.h从v3.3.0开始。

c++ - C++11 是否允许 vector<const T>?

容器要求已从C++03更改为C++11。虽然C++03有全面的要求(例如,vector的复制可构造性和可分配性),但C++11对每个容器操作定义了细粒度的要求(第23.2节)。因此,您可以例如只要您只执行某些不需要赋值的操作(构造和push_back就是这样的操作;insert不是)。我想知道的是:这是否意味着标准现在允许vector?我看不出有任何理由不应该-constT,就像具有const成员的结构一样,是一种可复制构造但不可赋值的类型-但我可能遗漏了一些东西。(让我觉得我可能遗漏了一些东西的部分原因是,如果您尝试实例化vector,gcc主干会崩溃并烧毁,但对于T有一个const

c++ - 声明一个没有 const 的 C 风格的字符串是不是很糟糕?如果是这样,为什么?

在C++中执行此操作char*cool="cool";编译得很好,但给了我一个警告:deprecatedconversionfromstringconstanttochar*.我绝不会故意在std::string上使用C风格的字符串,但以防万一我被问到这个问题:在没有const修饰符的情况下声明C风格的字符串是不好的做法吗?如果有,为什么? 最佳答案 是的,这种声明是不好的做法,因为它允许通过写入字符串文字来意外引发未定义行为的多种方式,包括:cool[0]='k';strcpy(cool,"oops");另一方面,这很好,因为它分

javascript - 语法错误 : Use of const in strict mode

我正在使用node.js,并且在我的一个js文件中,我在“严格模式”中使用const。尝试运行它时,出现错误:SyntaxError:Useofconstinstrictmode.这样做的最佳做法是什么?编辑:'usestrict'constMAX_IMAGE_SIZE=1024*1024;//1MB 最佳答案 const和let是ECMAScript2015(又名ES6和Harmony)的一部分,在Node.js0.10或0.12中默认未启用。从Node.js4.x开始,“V8认为稳定的所有交付[ES2015]功能在Node.js