草庐IT

arg-constructor

全部标签

c++ - 用已知数量的元素填充 vector : specify its size in constructor or by using reserve method?

我想通过从流中读取单个元素来创建某种复杂类型的vector。我提前知道vector大小。是在vector构造函数中指定元素个数更好,还是使用reserve方法更好?这两个哪个更好?intmyElementCount=stream.ReadInt();vectormyVector(myElementCount);for(inti=0;i或intmyElementCount=stream.ReadInt();vectormyVector;myVector.reserve(myElementCount);for(inti=0;i如果我只是创建一个intvector或其他一些简单类型呢?

android - Q_RETURN_ARG 和 QQmlComponent - 组件未就绪

我花了3天仔细检查最好的reference我可以在互联网上找到有关Q_RETURN_ARG的资料。我已经包含了QQmlComponent.在C++上使用它发送变量以在QML上显示时,事情并不总是像看起来那样。可能因为Qt5相对较新,所以我们可以依赖的Material还不多。基本上,代码编译没有问题。当我要求它运行时,它毫无问题地将qml页面呈现给设备,然后出现错误:QQmlComponent:Componentisnotreadymain.cpp:33(intmain(int,char**)):GotQMLreturn:""除了文件invoke.pro和myapplication.cp

c++ - 有人给我一个使用 QVector::QVector(std::initializer_list<T> args) 的例子吗?

谁能给我一个使用以下构造函数intQt的例子?QVector::QVector(std::initializer_listargs); 最佳答案 采用std::initializer_list的构造函数使用列表初始化时会考虑。这是一个涉及花括号初始化列表的初始化:QVectorv{1,2,3,4,5};//orequivalentlyQVectorv={1,2,3,4,5};请注意,这是C++11的特性。事实上,第一种语法是C++11的新语法,而第二种语法可以在C++03中用于聚合初始化。您还可以使用直接初始化并将初始化列表作为参数

C++ 继承 : Calling Base Class Constructor In Header

假设类Child是类Parent的派生类。在一个五文件程序中,我如何在Child.h中指定我想调用Parent的构造函数?我认为header中的以下内容不合法:Child(intParam,intParamTwo):Parent(Param);在这种情况下,Child.cpp的构造函数语法应该是什么样的? 最佳答案 在Child.h中,您只需声明:Child(intParam,intParamTwo);在Child.cpp中,您将拥有:Child::Child(intParam,intParamTwo):Parent(Param){

C++ 预处理器宏循环 __VA_ARGS__ 1 vs 2+ 参数

我正在使用这个post中的宏遍历我的论点。一切都很好!但是,有没有办法将这两个CCB_CREATE和CCB_CREATE_MORE结合起来?我需要提取第一个参数object_type来编写额外的代码。额外的object_type将使用FOR_EACH循环插入到map中。当我在使用CCB_CREATE_MORE(Type1)时只有一个参数时,编译器会提示。为了解决这个问题,我创建了另一个宏来处理CCB_CREATE(Type1)。希望找到一个巧妙的解决方案,将这两个组合成一个优雅的宏。有什么想法吗?#defineINSERT_LOADER_MAP(object_type)loader_m

c++ - 如何在作为 arg 传递给某个函数的数组中使用结构化绑定(bind)?

我正在尝试将给函数的2个整数数组分解为x,y当使用intinit[2]作为参数时,它不起作用。但是当我将它更改为int(&init)[2]时它会发生。vector>Search(vector>board,intinit[2],intgoal[2]){auto[x,y]=init;}这里的(&init)是什么意思?为什么在使用intinit[2]时它不起作用? 最佳答案 int(&init)[2]是对两个整数数组的引用。intinit[2]作为函数参数是C++的C遗产的遗留物。它没有将函数声明为采用数组。参数的类型调整为int*并且传

constructor - 如何在 Kotlin 的构造函数 block 之外访问辅助构造函数参数

我是Kotlin的新手,正在学习可用的教程。但是现在我似乎对辅助构造函数有疑问:在主构造函数中声明的参数可以在函数中访问,但是当我尝试使用辅助构造函数中的参数执行此操作时,出现错误:未解析的引用:nbr代码:classTest(_name:String){valname:String=_nameconstructor(_name:String,_nbr:Int):this(_name){valnbr:Int=_nbr}funprintNameAndNumber(){println("Name:$name")println("Number:$nbr")}}我很清楚我做错了什么,但谁能告诉

constructor - 如何在 Kotlin 的构造函数 block 之外访问辅助构造函数参数

我是Kotlin的新手,正在学习可用的教程。但是现在我似乎对辅助构造函数有疑问:在主构造函数中声明的参数可以在函数中访问,但是当我尝试使用辅助构造函数中的参数执行此操作时,出现错误:未解析的引用:nbr代码:classTest(_name:String){valname:String=_nameconstructor(_name:String,_nbr:Int):this(_name){valnbr:Int=_nbr}funprintNameAndNumber(){println("Name:$name")println("Number:$nbr")}}我很清楚我做错了什么,但谁能告诉

C++为什么vector初始化会调用copy constructor

当你用下面的方式初始化一个vector时:std::vectorMyVec(10);它调用默认构造函数一次,然后再调用复制构造函数10次。所以,如果我没理解错的话,vector中的对象都是拷贝构造函数生成的。有人可以解释调用复制构造函数而不是默认构造函数的原因吗?或者甚至只是在没有对象的情况下分配内存? 最佳答案 它将分配没有对象的内存,除非您指定初始大小为10,因此它必须创建10个对象。如果你想要存储10个对象而不实际创建它们,你可以这样做:std::vectorMyVec;MyVec.reserve(10);如果你看一下你正在使

c++ - 在 move 构造函数中用作 arg 后,哪些 std 类型保证为空/空

我知道shared_ptr,unique_ptr,weak_ptr在相同类型的构造函数中用作RVR参数后保证为空,但是我想知道除了我提到的那些之外,标准是否为其他一些std::类型指定了这一点。请注意,我知道move后的元素处于有效但未指定状态,我在这里对指定了哪些类型状态感兴趣。 最佳答案 使移出对象处于“空”状态的类型是智能指针、锁([thread.lock.unique.cons]/21、[thread.lock.shared.cons]/21)、文件流([filebuf.cons]/(4.2))、future([future