【发布时间】:2019-10-22 02:02:28
【问题描述】:
我知道指向数组的指针及其大小。可以从中创建什么容器?我试着这样做:
std::initializer_list<int> foo(arr, arr + size);
它适用于 MSVC,但不适用于 gcc
【问题讨论】:
-
Initializer_list构造函数非常简单:constexpr initializer_list() noexcept;。如果std::initializer_list<int> foo(arr, arr + size);在 Visual Studio 下工作,那是因为他们添加了扩展。 -
initializer_list设计用于大括号时间列表,它不是通用容器。您可以使用vector或span以及其他选项 -
这个列表的最终目标是什么?在需要之前传递数组和长度可能更容易。如果没有,我会从
std::vector开始,可能会完全放弃数组。 -
引出一个问题:为什么不首先使用
std::vector?无论如何,如果您以后只是要将它填充到容器中,那么该数组有什么用? -
一个重要的补充——我不想复制内存。 MSVC 的 initializer_list 只是提供了一个用于遍历数组的接口。
标签: c++ gcc visual-c++