草庐IT

初始化OpenStack

全部标签

c++ - 为什么从初始化列表中初始化 vector 时不使用 move 构造(通过隐式构造函数)

为了演示move语义,我编写了以下示例代码,其中包含来自int的隐式构造函数。structC{inti_=0;C(){}C(inti):i_(i){}C(constC&other):i_(other.i_){std::cout和autovec2=std::vector{1,2,3,4,5};cout有输出Acopyconstructionwasmade.1Acopyconstructionwasmade.2Acopyconstructionwasmade.3Acopyconstructionwasmade.4Acopyconstructionwasmade.5reversingAmov

c++ - 如何使用初始化列表 C++ 初始化数组

我有一个与C++数组和结构相关的问题。我有一个结构:structnpc_next_best_spot{npc_next_best_spot():x({0}),y({0}),value(-1),k(0),i({0}),triple_ress({0}),triple_number({0}),bigI(0){}intx[3];inty[3];doublevalue;intk;inti[3];inttriple_ress[3];inttriple_number[3];intbigI;};但这给出了警告"list-initializerfornon-classtypemustnotbeparen

c++ - 如何在现代 C++ 中使用生成器初始化 const 容器?

为了避免可变的容器/状态,我目前想知道什么是最接近从某些输入构建constSTL容器的东西,例如constvectorinput={2,13,7,1};我想做的是这样的:constautotransformed=generate_from>(input.begin(),input.end(),to_string);do_something(transformed);虽然您发现最多的方法是创建一个可变对象并对其进行修改(我想避免这种情况):vectorbad_mutable_container;for(constauto&elem:input){bad_mutable_container

c++ - 调用构造函数重新初始化变量似乎不起作用?

我想运行一个程序的1,000次迭代,因此在main中设置一个1000的计数器。我需要在每次迭代后重新初始化各种变量,并且由于类构造函数已经写出所有初始化-我决定在每次迭代后调用它,每次迭代的结果都存储在main中的一个变量中。然而,当我调用构造函数时,它没有任何效果……我花了一段时间才弄明白——但它没有重新初始化任何东西!我创建了一个与构造函数完全相同的函数-因此对象将有自己的版本。当我调用它时,它按照我的预期重新初始化了所有内容。intmain(){ClassMyClass()intcounter=0;while(counter...有人可以解释为什么我做的是错的,或者没有用,或者是

c++ - 在 C++ 中初始化变量的偏好

开始使用C++并注意到您可以通过两种方式初始化变量intexample_var=3;//withtheassignmentoperator'='或intexample_var(3);//enclosingthevaluewithparentheses是否有理由使用一个而不是另一个? 最佳答案 第一种形式可以追溯到C时代,而第二种形式是在C++中添加的。添加的原因是在某些上下文中(特别是构造函数中的初始化列表)不允许使用第一种形式。这两者并不完全等同于所有类型,这就是其中一个或另一个可能更有用的地方。第一种形式在语义上意味着从右侧创建

C++ - 数组的初始值设定项太多

我做了一个这样的数组,但它一直说我有太多的初始化程序。我该如何解决这个错误?intpeople[6][9]={{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0}}; 最佳答案 这里的问题是您在数组声明部分交换了行/列索引,因此编译器感到困惑。通常在声明多维数组时,第一个索引用于行,第二个用于列。这个表单应该修复它:intpeople[9

c++ - libtool link - 便利库的全局状态初始化

我的设置不起作用,我不知道我在这里做错了什么-我正在尝试将一个项目从手工制作的Makefile转换为autotools,并且我认为我已经正确设置了大部分项目,因为应用程序及其所有便利库都正确构建和链接,但是全局状态初始化程序存在一些问题便利图书馆。一些库在代码中遵循这样的模式://inglobalscopeofsomemodule.cppnamespace{boolregistered=ModuleShare::registerModule("SomeModule");}这段代码连同实际的模块源代码,使用libtool编译成一个方便的库//libsomethingMakefile.am

c++ - 将接受花括号初始化列表并推导长度的数组类

以前有人问过这个问题,但我很想知道在较新的C++标准中是否有任何更改。任何当前或future的标准都是可以接受的。问:有没有办法创建一个Array类,它可以用braced-init-list初始化,而不必手动指定数组长度,元素存储在堆栈中,并且不不需要“make_array”函数。templatestructArray{Titems[N];};Arrayfoo={1,2,3};由于initializer_list没有根据大小进行模板化,因此使用它的构造函数将无法完成这项工作。C++17中的推导指南几乎有效,但您必须省略类型参数并且所有项目必须具有完全相同的类型Arrayfoo={1,2

c++ - 通过 "\0"而不是 memset() 批量初始化 char 数组

通常由memset初始化的字符数组。我在我的项目代码中发现了由"\0"初始化的char数组。我还编译并检查了,它工作正常。我的问题是这是批量初始化char数组的正确方法吗?例如:chara[20]="\0";printf("%s",a); 最佳答案 是的,这是正确的方法之一。对于c引用C11,第6.7.9章Iftherearefewerinitializersinabrace-enclosedlistthanthereareelementsormembersofanaggregate,orfewercharactersinastri

c++ - 如何用 1 个非常大的数组快速初始化

我有一个巨大的数组:int*arr=newint[BIGNUMBER];如何用1个数字快速填充它。通常我会做for(inti=0;i但我认为这需要很长时间。我可以使用memcpy或类似的工具吗? 最佳答案 您可以尝试使用标准函数std::uninitialized_fill_n:#include//...std::uninitialized_fill_n(arr,BIGNUMBER,1);无论如何,当谈到性能时,规则是始终进行测量以支持您的假设-特别是如果您因为所谓的性能改进而打算放弃清晰、简单的设计而采用更复杂的设计.编辑:请注意