草庐IT

int_expr

全部标签

c++ - std::multiset<int> 与 std::map<int, std::size_t> 用于保持多个可重复整数值

我想创建一个记录来保存关于的信息a)存在什么样的元素,b)出现的每种元素的数量在树的一个节点中。我会明确地只为叶节点存储这些信息,而父节点的信息可以通过组合它所有子节点的信息来获得(例如,子节点1有3个A对象,1个B对象,子节点2有1个A的对象,C的2个对象--parent有4个A的对象,1个B的对象和2个C的对象)。从父节点请求此信息时,我会小心不要先请求、使用和丢弃子节点的信息,然后再为其父节点请求,但是向上构造将是一个常见的手术。其他两个常见操作直接源self存储的内容:是否存在类型X的对象?和存在多少类型X的对象?还有如何存在多种对象?对象种类以整数表示,对象编号始终为整数值。

c++ - 什么是 typedef int var[1];做?

我遇到过以下代码:typedefintvar[1];//orvar[3]它到底有什么作用?我不明白下标添加了什么,因为现在我可以为int定义“var” 最佳答案 typedef声明使用与普通变量声明相同的语法。不同之处在于,不是声明“一个名为x的y变量”,而是声明“一个名为x的类型,它是输入y。”语法在其他方面相同。那么,让我们从您的示例中删除typedef,看看我们得到了什么:intvar[1];var是一个类型为int[1]的变量,或者说,一个int的数组。如果我们将typedef添加回去:typedefintvar[1];这使

c++ - 将键码的字符串表示形式转换为 Qt::Key(或任何 int)并返回

我想将表示键盘上的键的字符串转换为键码枚举,如Qt::Key(或其他任何东西)。示例转换为:“Ctrl”到Qt::Key_Control“向上”到Qt::Key_Up"a"到Qt::Key_A"5"到Qt::Key_5如您所见,上面不仅包括字母数字键,还包括修饰符和特殊键。我没有附加到Qt键码枚举,但Qt似乎在QKeySequence的fromString静态函数中具有此解析功能(参见thisdirectlink):QKeySequencefromString(constQString&str,SequenceFormatformat);您可能会问我为什么需要这种转换。好吧,我有一个由

C++/C int32_t 和 printf 格式 : %d or %ld?

这个问题在这里已经有了答案:printfformatspecifiersforuint32_tandsize_t(4个答案)Howtoportablyprintaint64_ttypeinC(7个答案)关闭6年前。在某些平台上,int32_t(来自stdint.h)是longint,但在其他平台上,它可能是int。当我想使用printf时,如何确定应该使用哪种格式,"%ld"或"%d"?或者,也许,我应该像下面这样强制将其转换为long:int32_tm;m=3;printf("%ld\n",(long)m);但是这个解决方案很乏味。有什么建议吗?

c++ - `if constexpr`可以用来声明不同类型和init-expr的变量吗

例如:voidfoo(){ifconstexpr(...)intx=5;elsedoublex=10.0;bar(x);//callsdifferentoverloadsofbarwithdifferentvalues}这在D语言中很常见,但我没有找到有关C++17的信息。当然也可以用类似的东西std::conditional::typex;但仅限于基本情况。即使是不同的初始化程序(如上)也会造成大问题。 最佳答案 此代码无法运行。问题是当您调用bar时x超出范围。但有一个解决方法:constexprautot=[]()->auto

c++ - 声明为返回 int 的函数不返回任何内容。这是未定义的行为吗?

这是C++中的有效函数:intf(){if(false){return42;}}以下定义导致UB:intx=f();//returnvalueused问题:下面的表达式语句会导致UB吗?f();非常欢迎从标准中引用。 最佳答案 C++03§6.6.3/2:从一个函数的末尾流出相当于一个没有值的返回;这会导致值返回函数出现未定义的行为。所以这是一个函数本身的UB。顺便说一句,gcc给你一个很好的警告,指向这个UB:Infunction'intf()':Line7:warning:controlreachesendofnon-voidf

c++ - 当我在 C++ 中将临时 int 分配给 const 引用时会发生什么?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Doesaconstreferenceprolongthelifeofatemporary?假设我有一个函数f:intf(intx){returnx;}constint&a=f(1);我知道f(1)只是一个临时的,我会在这条语句之后被销毁,但是将引用设为const会使f(1)的生命周期更长吗?如果是,f(1)将存储在哪里?这是否意味着x在超出范围时也没有被销毁?f(1)和x有什么区别?

c++ - 为什么非 const、非 int/enum 静态数据成员必须在定义之外初始化?

我知道只有静态、常量和int/枚举(c++11之前)的数据成员才能在类声明中初始化。“所有其他静态数据成员必须在全局命名空间范围内定义(即在类定义的主体之外)并且只能在这些定义中初始化”。为什么不能在类定义中初始化其他静态数据成员?是否有具体原因禁止这样做?如果数据成员特定于类,为什么它们在全局命名空间范围内声明,而不是在与其类相关的某些范围内声明? 最佳答案 Whycan'totherstaticdatamembersbeinitializedintheclassdefinition?Wasthereaspecificreason

c++ - 检查 int 或 list<int>

谁能告诉我完成此任务的最佳方法。比如说,我有一个模板函数,比如templatevoidget_result(ARGUMENT&ag){//argcanbeasingleobjectofaparticularobjectorlistofobjectsofthatparticularclass.//rest}有没有一种方法可以检查&ag是单个对象还是对象列表。此外,使用给定的模板界面。如果答案是通过类接口(interface)以某种方式通过模板规范来回答的,那无关紧要。唯一的问题是我不想指定对象类型或列表类型。例。ag=int或ag=listCB 最佳答案

c++ - 无法将字符/字符串转换为 int

当我运行我的代码时,我在编译时遇到了这个错误:#g++-std=c++0xsixteen.cpp-O3-Wall-g3-osixteensixteen.cpp:Infunction‘intmain()’:sixteen.cpp:10:error:callofoverloaded‘stoi(char&)’isambiguous/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/basic_string.h:2565:note:candidatesare:intstd::stoi(constst