问题标签 [initializer-list]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++0x 初始化列表示例
我想看看这个现有代码示例如何能够利用 C++0x 初始化程序列表功能。
示例0:
它会支持这样的事情吗:
示例 1:
还是必须有这样的文字?:
示例 2:
如果是这样,将如何处理 AskString 和 Ask 之间的差异?
c++ - C++0x、编译器钩子和硬编码语言特性
我对 C++0x 的一些新特性有点好奇。特别是基于范围的 for 循环和初始化列表。这两个功能都需要用户定义的类才能正常运行。
我遇到了这篇文章,虽然最佳答案很有帮助。我不知道这是否完全正确(我可能只是完全误解了,请参阅第一个答案的第三条评论)。根据初始化列表的当前规范,标头定义了一种类型:
您可以在规范中看到这一点,只需 Ctrl + F 'class initializer_list'。
为了= {1,2,3}
隐式转换到类中,编译器必须对和initializer_list
之间的关系有所了解。没有构造函数可以接收任何内容,因此据我所知, initializer_list 是一个包装器,它绑定到编译器实际生成的任何内容。{}
initializer_list
循环也一样for( : )
,它也需要用户定义的类型才能工作(尽管根据规范,更新为不需要数组和初始化列表的任何代码。但初始化列表需要<initializer_list>
,所以这是用户定义的代码要求代理)。
我完全误解了这是如何在这里工作的吗?我认为这些新功能实际上非常依赖用户代码并没有错。感觉好像这些功能是半生不熟的,而不是将整个功能构建到编译器中,而是由编译器完成一半,在包含中完成一半。这是什么原因?
编辑:我输入了“严重依赖编译器代码”,而不是“严重依赖用户代码”。我认为这完全摆脱了我的问题。我的困惑不在于编译器中内置的新功能,而是编译器中内置的依赖用户代码的东西。
c++ - C++:结构/类中的构造函数与初始化列表
可以使用初始化列表创建结构/类的对象(没有构造函数) 。为什么在带有构造函数的结构/类上不允许这样做?
c++ - std::initializer_list 作为函数参数
出于某种原因,我认为 C++0x 允许std::initializer_list
作为函数的函数参数,这些函数期望可以从此类构造的类型,例如std::vector
. 但显然,它不起作用。这只是我的编译器,还是永远不会工作?是因为潜在的过载解决问题吗?
c# - C#中的数组数组
- 我需要知道如何在 C# 中初始化数组数组。
我知道存在多维数组,但我认为我不需要它!我试过这段代码..但不知道如何使用初始化列表进行初始化..
double[][] a=new double[2][];// ={{1,2},{3,4}};
谢谢
PS:如果你想知道我为什么使用它:我需要数据结构,当我调用 obj[0] 时它会返回一个数组。我知道这很奇怪。
谢谢
c++ - initializer_list 在 VC10 中不起作用
我在 VC++ 2010 中编写了这个程序:
但是当我编译项目时出现此错误:
错误 1 错误 C2552: 'c' : non-aggregates cannot be initialized with initializer list c:\users\pswin\documents\visual studio 2010\projects\test_c++0x\test_c++0x\main.cpp 27
和
2 IntelliSense:“class1”类型的对象不允许使用“{...}”进行初始化 c:\users\pswin\documents\visual studio 2010\projects\test_c++0x\test_c++0x\main.cpp 27
问题是什么?
c - C 编译错误:“可变大小的对象可能未初始化”
为什么我会收到错误“可变大小的对象可能未初始化”的错误代码?
c++ - std::map 扩展初始值设定项列表是什么样的?
如果它甚至存在,std::map
扩展的初始化列表会是什么样子?
我已经尝试了一些组合......好吧,我能想到的 GCC 4.4 的一切,但没有发现任何编译的东西。
c++ - 我可以在“太少的初始化程序”上导致编译错误吗?
我正在使用聚合初始化程序为单元测试设置一块静态数据。
我想使用数组大小作为预期的元素数量,但如果提供的初始化程序太少,这可能会失败:
这在 Visual Studio 2008 中不会出现编译器错误。
我希望能够这样使用它:
但是因为我没有 14 点的编译时保证,所以这会从所提供值的数组末尾结束并进入默认初始化值。
我可以在编译时以某种方式强制执行聚合数组初始值设定项的数量吗?
c++ - 在构造函数初始化器中初始化成员数组
我相信原因是数组只能用=
语法初始化,即:
问题
- 我该如何做我想做的事情(即在构造函数中初始化一个数组(而不是在主体中分配元素))。甚至可能吗?
- C++03 标准对在 ctor 初始化程序中初始化聚合(包括数组)有什么特别的说明吗?或者上述代码的无效是其他一些规则的必然结果?
- C++0x 初始化列表能解决问题吗?
PS请不要提及向量,boost::arrays,以及它们对数组的优越性,我很清楚。