问题标签 [stdinitializerlist]

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.

0 投票
1 回答
68 浏览

c++ - Why did STL made a(nother) distinction between a std::array and a std::initializer_list

Why is there not only 1 type with the best performance, to define a list at compile time?

The benchmark is clear, the constexpr std::initializer_list is faster, uses even less memory and the IO-reads are astonishingly less over constexpr std::array:

https://build-bench.com/b/1EDAcFjJ6NACk4Pg4tG2nbsEx0A

So why didn't they implement the array subscription methods to std::initializer_list make std::array unnecessary.

0 投票
2 回答
124 浏览

c++ - 为什么 std::pair 不能与 std::initiliazer_list 进行比较

因为std::pair,我只是想知道为什么会这样

而这不会:

是因为运算符=为 std::pair 重载,而==不是吗?

0 投票
2 回答
89 浏览

c++ - 下面的字符串代码调用了哪个构造函数?

我正在阅读 c++ 入门并遇到了一个向量列表初始化的示例,其中作者提到如果无法进行列表初始化,编译器就会寻找其他方法来初始化对象。以下是字符串向量的示例。

这将创建一个包含 10 个元素的向量,其值为“hi”。我认为这是因为列表初始化依赖于下面的构造函数来创建向量。

我为 String 尝试了类似的列表初始化

我期待它创建一个字符串“cccccccccc”,因为它有一个可用的构造函数

但它只打印“c”?这里使用了哪个字符串构造函数?

0 投票
1 回答
147 浏览

c++ - 矢量类如何接受多个参数并从中创建一个数组?

矢量示例

知道如何在花括号中接受多个参数并形成一个数组吗?

std::vector类用于std::allocator分配内存,但我不知道如何在自定义类中使用它。 VS 代码显示std::allocator

我做了同样的事情,但它不像那样工作

菜鸟在这里....

0 投票
1 回答
228 浏览

c++ - 为什么我们需要 std::initializer_list 的私有构造函数?

标准C++ 编程语言std::initializer_list中建议的实现很简单。简单地说,我的意思是没有什么奇怪的。 但是在 Compilers 的实现中事情变得复杂,例如,GCC 有一个私有构造函数,上面有一条注释,上面写着:'编译器可以调用私有构造函数。' . 这里eerorika回答说:很特别。所以我在编译器源代码中寻找它:
std::initializer_liststd::initializer_liststd::initializer_list

铛:

海合会:

而且我不明白为什么我们需要一个特殊的私有构造函数?我前段时间想转换std::vector<T>std::initializer_list<T>.

0 投票
0 回答
71 浏览

c++ - 当我将嵌套的括号初始化列表传递给 C++ 中的构造函数时会发生什么?

我将嵌套的括号初始化列表传递给类构造函数:

我得到了编译错误:

我在这里阅读了 cppreference 中的列表初始化。我可以告诉表达式属于第一种语法类型:

T object { arg1, arg2, ... }; (1)

使用花括号初始化列表初始化命名变量(即,可能为空的括号括起来的表达式列表或嵌套的花括号初始化列表)

我无法理解有关效果的解释

你能帮忙弄清楚:

  1. 本案例与说明中的哪一项相符?

  2. 这是此处描述的非推断上下文吗?

顺便说一句,如果我将模板更改为特定类型作为注释行,编译错误就会消失。

0 投票
1 回答
137 浏览

c++ - 声明向量时出错 - 预期表达式

在第 15 行出现错误“预期表达式”。不知道它需要什么以及如何解决它。

0 投票
0 回答
52 浏览

c++ - 如何在 c++17 中调用具有空 initializer_list 的构造函数?

考虑这段代码:

我想知道为什么它们在 C++14 和 C++17 之间的行为不同,以及如何在 C++17 中构造一个Fooinitializer_list的?

0 投票
1 回答
44 浏览

c++ - 我需要 std::move 一个 std::initializer_list 吗?

我想通过包装器将列表初始化的向量传递给工作函数。我不需要原始函数(main)中的值,所以我应该移动它吗?

该文档指出:

复制 std::initializer_list 不会复制底层对象。

所以成本可能是最小的,但是移动它仍然有优势,还是列表复制省略并且向量直接列表初始化?

(编译)代码