草庐IT

VARIABLE_SIZE_STRUCT

全部标签

c++ - 微优化 : iterating with local variable vs. 类成员

我认为如果我将迭代变量声明一次作为类成员,我会节省一些时间:structFoo{inti;voidmethod1(){for(i=0;i然而,这似乎快了20%structFoo{voidmethod1(){for(inti=0;i在这段代码中voidloop(){//Arduinoloopsfoo.method1();foo.method2();}您能解释一下性能差异吗?(我需要在Arduino上运行许多简单的并行“进程”,这种微优化会产生影响。) 最佳答案 当您在循环内声明循环变量时,它的范围非常狭窄。编译器可以随时将其保存在寄存

我的类中的 c++ condition_variable wait_for 谓词,std::thread <unresolved overloaded function type> error

我想在我的类中使用一个线程,然后该线程需要使用一个condition_variable,条件变量将被阻塞,直到一个谓词被更改为true。代码如下所示:classmyThreadClass{boolbFlag;threadt;mutexmtx;condition_variablecv;boolmyPredicate(){returnbFlag;}intmyThreadFunction(intarg){while(true){unique_locklck(mtx);if(cv.wait_for(lck,std::chrono::milliseconds(3000),myPredicate)

c++ - 错误 : expected unqualified-id before ‘.’ token//(struct)

我需要制作一个程序,从用户那里获取分数,然后对其进行简化。我知道该怎么做并且已经完成了大部分代码,但我一直收到此错误“错误:‘.’标记前应为不合格ID”。我已经声明了一个名为ReducedForm的结构,它包含简化的分子和分母,现在我要做的是将简化的值发送到这个结构。这是我的代码;在Rational.h中;#ifndefRATIONAL_H#defineRATIONAL_Husingnamespacestd;structReducedForm{intiSimplifiedNumerator;intiSimplifiedDenominator;};//Ihaveaclassherefor

c++ - 这段代码在做什么? (size_t)-1

有人能解释一下当size_t或任何其他类型标识符被括在括号中时会发生什么吗?我知道这是旧的类型转换语法,但在这种情况下我不了解正在发生的事情。我已经看到它用于将类型的最大大小定义为:size_tmax_size=(size_t)-1 最佳答案 此代码(不必要地)强制转换-1至size_t.最可能的意图是获得size_t的最大可能值。在这个系统上。虽然这段代码没有未定义的行为,但这段代码很丑陋——在C++中你应该使用std::numeric_limits::max()在C中使用SIZE_MAX宏正是为了获得最大的目的size_t值(v

c++ - "variable tracking"占用了我的编译时间!

我有一个自动生成的文件,看起来像这样......staticvoiddo_SomeFunc1(void*parameter){//Dostuff.}//Continuesonforanother4000functions...voiddispatch(intid,void*parameter){switch(id){case::SomeClass1::id:returndo_SomeFunc1(parameter);case::SomeClass2::id:returndo_SomeFunc2(parameter);//Thiscontinuesforthenext4000cases.

c++ - 在 C++ 中使用 C 风格的 struct/typedef

我有一个混合使用C和C++的项目。在C头文件中,我有这样的代码:typedefstructmystruct*mystruct;structmystruct{//whateverstructneeds};为了在C++文件中使用它,我正在做:extern"C"{#include"mystruct.h"}所以你看到我正在创建一个使用相同名称的不透明指针。这在C中很好,但在C++中不行(因为要求在C中使用struct关键字实例化,但在C++中不行)。但是,在尝试编译C++代码时出现错误(声明冲突)。我认为使用extern"C"会使编译器将Cheader视为C,但它似乎仍将其用作C++。对这里发

c++ - 为什么C++中同时存在struct和class?

正如我们所知,struct和class在该语言的许多地方是可以互换的。令人困惑的是,关键字本身不一定对应于标准中使用的语言。例如,在标准草案N4567[class]/10中,APODstruct109isanon-unionclassthatisbothatrivialclassandastandard-layoutclass,andhasnonon-staticdatamembersoftypenon-PODstruct,non-PODunion(orarrayofsuchtypes).Similarly,aPODunionisaunionthatisbothatrivialclas

c++ - 为什么他用 "typedef vector<double>::size_type"而不是用 "int"

我刚刚学习C++,并且正在使用AcceleratedC++。在一个vector例子中,作者使用了如下代码;typedefvector::size_typevec_sz;vec_szsize=homework.size;我知道typedefvector::size_typevec_sz;这样他就不必将下一个命令写成vector::size_typesize=homework.size;,但我的问题是他为什么不直接声明size改为整数?intsize=homework.size;这是因为我们使用了vector吗?如果是这样,是否意味着vector迭代器返回的值不能存储在常规变量中?

c++ - 提神气 : Take a rule's attribute and set it as a field of an enclosing rule's struct attribute?

像许多其他问题一样,我正在尝试使用Boost.Spirit.Qi将简单语法解析为结构树。我会尽量提炼我正在尝试做的事情,以尽可能最简单的情况。我有:structInteger{intvalue;};BOOST_FUSION_ADAPT_STRUCT(Integer,(int,value))稍后,在语法结构中,我有以下成员变量:qi::ruleinteger;我用它来定义integer=qi::int_;但是,当我尝试实际解析一个整数时,使用qi::phrase_parse(iter,end,g,space,myInteger);myInteger.value在成功解析后始终未初始化。同

c++ - 这个 AnonymousClass(variable) 声明中到底发生了什么?

尝试编译:classAnonymousClass{public:AnonymousClass(intx){}};intmain(){intx;AnonymousClass(x);return0;}从MSVC生成错误:foo.cpp(13):errorC2371:'x':redefinition;differentbasictypesfoo.cpp(12):seedeclarationof'x'foo.cpp(13):errorC2512:'AnonymousClass':noappropriatedefaultconstructoravailableg++的错误信息类似:foo.cpp