问题标签 [stdarray]

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 投票
2 回答
24674 浏览

c++ - 如何在不直接提供大小的情况下使用初始化列表创建 std::array

我怎样才能a3编译?

在使用初始化列表时,对数组的大小进行硬编码是非常不方便且脆弱的,尤其是长列表。有什么解决办法吗?我希望如此,否则我会很失望,因为我讨厌 C 数组并且std::array应该是它们的替代品。

0 投票
1 回答
335 浏览

arrays - std::array vs C-array vs std:vector

我想在我的程序中替换std::vectorstd::array,所以我继续测试:

好吧,输出很奇怪 -std::array比 C-array 慢 3 倍,甚至比vector. 没有应用优化,唯一的标志是-std=c++11. 有什么问题?

0 投票
1 回答
5938 浏览

c++ - 创建一个在运行时计算大小的 std::array

我想创建一个对象,std::array<T, N>但问题是我只能使用返回constexpr类型的函数,否则编译器会抱怨。这里的问题是我需要根据另一个数组的大小来计算这个数组的长度,可能是这样的:

我怎样才能转换这个函数的输出,以便我可以使用它来代替N

0 投票
1 回答
1592 浏览

c++ - 带有 static_assert 的 constexpr std::array

使用gcc 4.8.24.9.1using编译时g++ test.cpp --std=c++11,编译成功。然而,当编译clang 3.43.5使用clang++ test.cpp --std=c++11时,编译失败:

所以我的问题是,在符合 C++11 的意义上,哪个编译器是“正确的”?而且,如果clang是正确的,那么为什么 std::arrayoperator[]不能使用 constexpr?这不是std::array应该帮助解决的事情之一吗?

0 投票
2 回答
13776 浏览

c++ - 我应该如何大括号初始化 std::pairs 的 std::array?

VS2013 错误:

错误 C2440:“正在初始化”:无法从“int”转换为“std::pair”没有构造函数可以采用源类型,或者构造函数重载决议不明确`

我究竟做错了什么?

0 投票
3 回答
1321 浏览

c++ - 具有私有构造函数和自身静态数组的类

对不起,如果标题令人困惑,我找不到一个简单的方法来用一个简单的句子来写它。无论如何,我面临的问题:

getThatThing函数旨在从查找表中返回一个实例。

我不能使用std::arrayof Something,除非我在课堂上添加一个公共 ctor SomeThing()。它适用于旧式数组,我可以定义数组,并在SomeThing::generateLookupTables()函数中填充它。显然该类型std::array<SomeThing, 64>没有构造函数。关于如何使其工作的任何想法,或者这个概念的更好结构?

============= 编辑 =======

这种friend std::array<SomeThing, 64>方法似乎是个好主意,但是:

它也将用于其他地方的数组中。我想保证这个类总是对外部用户保持某些不变量。使用这个友好的数组,用户可能会意外地创建一个未初始化的SomeThing.

此外,查找表是使用相当复杂的过程生成的,不能按内联方式完成,如std::array<SomeThing, 64> SomeThing::lookup_table_0(some value)

0 投票
4 回答
790 浏览

c++ - 使用 std::array 创建树

底部的代码会生成以下编译时错误。std::vector<Node>如果我使用or ,错误就会消失std::array<unique_ptr<Node>, 3>。有人可以解释一下这是什么吗?

在 main.cpp:1:0 中包含的文件中:/usr/include/c++/4.9/array:在 'struct std::array' 的实例化中:main.cpp:9:23:
此处需要 /usr/include/ c++/4.9/array:97:56: 错误: 'std::array<_Tp, _Nm>::_M_elems' 类型名称不完整 _AT_Type::_Type _M_elems; ^ main.cpp:3:7: 错误:“类节点”类节点的前向声明

0 投票
1 回答
3971 浏览

c++ - 原始数组比 std::array 有什么优势吗?

根据这个关于原始数组与 std::vector的问题的公认答案,原始数组的优点(早在 2010 年)是:

  • 数组稍微紧凑一些:大小是隐式的
  • 数组是不可调整大小的;有时这是可取的
  • 数组不需要解析额外的 STL 头文件(编译时)
  • 使用数组与直接 C 代码交互会更容易(例如,如果 C 正在分配并且 C++ 正在使用)
  • 固定大小的数组可以直接嵌入到结构或对象中,这可以提高内存局部性并减少所需的堆分配数量

据我所知, std::array 解决了除第三点之外的所有问题。

所以除非我迫切需要改进我的编译时间,有没有理由在 C++11 中使用原始数组而不是 std::array ?

0 投票
1 回答
405 浏览

c++11 - 我可以使用 const & 作为 constexpr 函数的参数吗?

CArray T(&)(N)我正在编写一个使用 a或 a的 constrexpr 函数std::array。我想我必须编写 2 个函数(如果你知道得更好,我会很高兴知道),

但我担心我用 std::array 写的东西

编写 constreexpr 函数以通过 const & 传递时是否正确?

我认为这应该是因为在编译时编译器会实例化一个副本,并且在编译时没有 L 值的概念。

有人可以解释一下吗?

0 投票
1 回答
144 浏览

c++ - “除了默认构造的数组不为空”是什么意思?

在 N3337 中,我正在阅读 §23.3.2.1/3,它指出:

Anarray满足容器和可逆容器 (23.2) 的所有要求,除了默认构造的array 对象不是空的并且交换没有恒定的复杂性。

在 §23.2.1,表 96 容器要求中,它显示了一个默认构造对象X u;,其中后置条件为u.empty()。那么大概是以下几点:

应该导致a.empty()输出1,它确实如此。那么这里的“空”是什么意思呢?