initialization相关内容
我的应用使用 TreeMap 来保持数据排序并进行日志(n)查找和插入.这在应用程序运行时的一般情况下效果很好,但是当应用程序第一次启动时,我需要用几百万个 long 来初始化 TreeMap,我得到了 sorted order(升序). 由于这些初始化值已经排序,有没有办法将它们插入到 TreeMap 而无需支付树插入和重新平衡的 log(n) 成本? 解决方案 好的!TreeMa
..
类 Foo {上市:Foo(float b) {}};类酒吧{上市:酒吧(Foo foo){}};int main(int argc, char *argv[]) {酒吧 b1(3.0f);//接受,一个隐式转换发生在那里.酒吧 b2 = 3.0f;//错误:没有从 'float' 到 'Bar' 的可行转换返回0;} 为什么第二个表达式编译失败?我希望它会调用与第一个表达式相同的转换构造函数.
..
它有价值吗? 我试图了解 Java 中已声明但未初始化的变量/对象的状态. 我无法实际测试它,因为我不断收到 "Not Initialized" 编译错误,而且我似乎无法抑制它. 例如,我猜如果变量是 integer,它可能等于 0. 但是如果变量是一个字符串,它会等于 null 还是 isEmpty() 会返回 true? 所有未初始化变量的值是否相同?还是每个声明
..
假设类型 foo_t 具有命名构造函数习惯用法 make_foo().现在,我想要正好有 123 个 foo ——不多也不少.所以,我正在考虑一个 std::array.现在,如果 foo_t 是默认可构造的,我会写: std::arraypity_the_foos;标准::生成(标准::开始(pity_the_foos),标准::结束(pity_the_foos),[]
..
这里有 8 种在 C++11 中声明和初始化数组的方法,在 g++ 下似乎没问题: /*0*/std::arrayarr0({1, 2, 3});/*1*/std::arrayarr1({{1, 2, 3}});/*2*/std::arrayarr2{1, 2, 3};/*3*/std::arrayarr3{{1, 2, 3}};/
..
原始类型没有构造函数已经被反复强调了.例如,当我调用 Foo() 时,此 _bar 未初始化为 0: 类Foo{int _bar;}; 显然 int() 不是构造函数.但是是它的名字是什么? 在这个例子中,我会说 i 是:(构造的?初始化的?吃错的?) for(int i{}; i
..
我正在阅读直接初始化和复制初始化之间的区别(第 8.5/12 节): T x(a);//直接初始化T y = a;//复制初始化 我从阅读 copy-initialization 是它需要 可及性非显式复制构造函数,否则程序将无法编译.我通过编写以下代码验证了它: 结构 A{诠释我;A(int i) : i(i) { std::cout
..
给定这样的课程: 类 Foo {上市:富(整数);Foo(const Foo&);福&运算符=(int);私人的://...}; 这两行是完全等价的,还是它们之间有细微的差别? Foo f(42);富 f = 42; 编辑:我通过在原始问题中使 Foo 构造函数“显式"来混淆问题.我已将其删除,但感谢您的回答. 我还添加了复制构造函数的声明,以明确复制可能不是一个简单的操作.
..
因此,C++ 标准要求类成员按照它们在类中声明的顺序进行初始化,而不是按照它们在任何构造函数的初始化列表中的顺序进行初始化.但是,这并不意味着评估这些初始化的参数的顺序.我正在使用一个经常传递对序列化对象的引用的系统,并且想知道我是否可以确保以正确的顺序从中读取位,而与这些位写入对象字段的顺序无关. struct Foo {诠释一个;双乙;//我希望能够做到这一点Foo(SerObj &s):
..
我是否初始化一个整数变量有什么区别: int i = 0;诠释我; 编译器或 CLR 是否将其视为同一件事?IIRC,我认为它们都被视为同一个东西,但我似乎找不到这篇文章. 解决方案 我查看了IL(使用ildasm),确实只有设置为0的int在构造函数中真正设置为0. 公共类 Class1{int setToZero = 0;诠释未设置;} 生成: .method public
..
我正在编写这个拷贝构造函数: //RegMatrix的CCtorRegMatrix::RegMatrix(const RegMatrix &other){这->numRow = other.getRow();这->numCol = other.getCol();//创建_matrix = createMatrix(other.numRow,other.numCol);整数 i, j;//复制矩阵
..
刚刚进行代码审查并开始怀疑: 我认为 if (self = [super init]) 检查将 [super init] 的返回值分配给变量 self 是否成功与否(操作价值).因此 (self = nil) 实际上是 TRUE. 我以为 if ((self = [super init])) 在赋值后检查 self 的值是什么(变量的值).因此 ((self = nil)) 将是 FA
..
是否可以在运行时初始化我的类的静态 const 成员?这个变量在我的程序中是一个常量,但我想将它作为命令行参数发送. //A.hA类{上市:静态常量int T;};//在主方法中int main(int argc,char** argv){//我该怎么做A::T = atoi(argv[1]);} 如果无法做到这一点,我应该使用什么类型的变量?我需要在运行时初始化它并保留常量属性. 解决
..
我看过 Stack Overflow 问题使用 SPI 接口初始化 microSD 卡 并没有看到任何与我的问题相匹配的答案(也就是说,我还没有尝试过的事情). 我有一个类似的问题,我试图通过微控制器的 SPI 接口(特别是 HC908).我已经尝试遵循物理层简化规范 v2.00 中的流程图,它似乎在 Transcend 1 GB & 上正确初始化2 GB 和 AE&C 1 GB 卡.但是我
..
这行得通: 类 MyClass{诠释一个;公共 MyClass(){诠释 b = a;}} 但这会导致编译器错误(“使用未分配的局部变量'a'"): 类 MyClass{公共 MyClass(){诠释一个;诠释 b = a;}} 据我所知,这是因为在第一个示例中,从技术上讲,编译器不知道没有分配“a".在后一个示例中,“a"是在本地定义的,因此很容易跟踪. 但为什么后一个例子不起作用
..
我需要使用类似于 php 的 isset 函数的东西.我知道 php 和 java 是非常不同的,但 php 是我以前对类似于编程的知识的唯一基础.是否有某种方法可以返回一个布尔值来判断实例变量是否已被初始化.比如…… if(box.isset()) {box.removeFromCanvas();} 到目前为止,当我的程序试图隐藏或删除尚未构造的对象时,我遇到了一个运行时错误. 解决方
..
在下面的代码中,我希望在调用 Class 构造函数时将数组定义为大小为 x 的数组.我该怎么做? class 类{上市:整数数组[];类(int x):???{ }} 解决方案 你不能用在编译时无法计算的非常量维度来初始化数组的大小(至少在当前的 C++ 标准中不是这样), AFAIK). 我建议使用 std::vector 而不是数组.它为大多数操作提供了类似数组的语法.
..
没有循环是否可以将所有列表值初始化为某个布尔值?例如,我想要一个包含 N 个元素的列表,全部为 False. 解决方案 你可以这样做:- >>>[错误] * 10[假,假,假,假,假,假,假,假,假,假] 注意:-请注意,您永远不应该对具有相同值的 mutable types 的 list 执行此操作,否则您会看到以下示例中的令人惊讶的行为:- >>>我的列表 = [[10]] *
..
在C++11中有两种初始化变量的方法: T a {something};T a = {某事}; 我在我能想到的所有场景中都测试了这两个,但我没有注意到其中的差异.这个答案表明两者之间存在细微差别: 对于我不太注意 T t = { init }; 或 T t { init }; 样式之间的变量,我发现区别在于次要的,最坏的情况只会导致关于滥用显式构造函数的有用编译器消息. 那么,这两
..
我经常有这样的课程: 公共类 Foo{私有字符串字段1;私有字符串字段2;//等等等等等等} 这使得 field1 和 field2 的初始值等于 null.让我的所有 String 类字段如下所示会更好吗? 公共类 Foo{私有字符串字段1 =“";私有字符串字段2 =“";//等等等等等等} 然后,如果我与类定义一致,我会避免很多空指针问题.这种方法有什么问题? 解决方案 我不
..