问题标签 [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.
c++ - std::array 和字节读取
我已经阅读了很多关于在 C++ 中不使用 C 风格的内容,而是使用 std::array、std::vector 或 std::string 等容器。
现在我正在尝试使用文件流读写小型二进制文件并将其存储在 std::array 中。
看起来 std::fstream 中的 read 和 write 方法只能用于 C 样式的数组...
所以这就是我的想法:
byte_t 只是一个
有用。但这是做到这一点的好方法吗?如果没有,还有什么其他方法可以做到这一点?我应该改用 byte_t [] 吗?
c++ - 在类构造函数中初始化类的 std::array
我正在尝试在另一个类的构造函数中初始化一个 std::array 对象。似乎聚合初始化应该在这里工作,但我想不出合适的语法。我该怎么做呢?
c++ - 来自 std::array 的读取范围
如何接受可能具有不同维度的 std::array ?这应该在编译时知道,但以下内容不起作用
我也知道 end-start == n 所以它也可能以某种方式被模板化。
c++11 - 是否可以将 std::array 移动到 std::vector 中?
这是一个关于堆栈内存和堆内存的交互以及通过std::array
和std::vector
类从堆栈到堆的特殊情况的问题。
原则std::array<T>
上可以看作是指向第一个元素的指针,加上一些关于数组大小的编译时信息。是否有可能让std::vector<T>
构造函数考虑到这一事实并尝试通过复制指针将 的内容移动array
到just 中。vector
一个用例是,一个函数返回一个std::array<double, >
std::array<double, 20> fun(){...};
但后来决定将其分配给 astd::vector
而无需逐个元素复制。
std::vector<double> v = fun(); // not working code
现在必须做
这实际上做了一些多余的工作,如果可能的话,这些工作就没有必要了std::vector<double> v(std::move(tmp)); \\ not working code
。
std::vector
和的内存布局std::array
是一样的,所以不是和障碍。
我知道主要障碍可能是std::array
元素在堆栈中,而std::vector
元素在堆中。很明显,即使编写移动构造函数,std::vector
堆栈中的内存仍将被不可撤销地破坏。
所以我想这个问题也可以理解为:
有没有办法将内存从堆栈移动到堆(无论这意味着什么),如果它可以与移动构造函数结合使用?
或者,如果原则上std::vector
可以有一个来自 a 的移动构造函数?std::array
MWE:
c++ - 在编译时将 std::array 的每个元素相乘
我想将一个转换std::array
为另一个std::array
,将它的每个元素乘以一个特定的数字。
我现在所拥有的显然不起作用:
我的问题是:如何在编译时迭代每个元素,或者如何在编译时应用相同的函数(在我的例子中:乘以 2)?
c++ - 这个片段有什么问题?
我不知道这个片段有什么问题。我收到此错误:
错误:成员函数“swap”不可行:“this”参数的类型为“const array”,但函数未标记为 const
getArrElement
没有返回const
数组。auto
应该推导出来,std::initializer_list
但我也认为这没有什么害处。
怎么了?
c++11 - C++11 GCC 5.1.1 数组必须使用大括号括起来的初始化程序进行初始化
字符串的这种初始化std::array
失败:
来自 gcc 5.1.1 的错误消息是:
编辑:这种形式的初始化也失败了:
编辑2:只有这种形式有效:
c++ - boost::spirit 用 std::array 解析成结构
我正在使用 boost::spirit 将文本解析为包含固定大小数组的结构。在遵循示例时
并尝试使用它来解析包含 std::array (或 boost::array)的结构,我认识到由于BOOST_FUSION_ADAPT_STRUCT的工作原理,我必须将助手result_of::adapt_array< some_array_type >::type放在结构也是如此。
我认为应该可以使用BOOST_FUSION_ADAPT_ADT创建一个包装器,但只是为了摆脱结构中的小适配器开销似乎有点过头了。由于我没有很多实例,从记忆的角度来看,我可以忍受它,但它也会引入一些噪音。
我还认为可以创建一个从数组类型派生的适配器,而不是封装它以隐藏一些噪音,但它会迫使我改变所有现有的结构,并且它会将解析器开销泄漏到外部,这不是很好的解决方案。
是否有一些明显的问题我正在接近错误,或者确实存在新的助手,它们在后台路由开销以便可以将它们封装在解析器中?
我知道 使用 std::array 作为 boost::spirit::x3 的属性。
这是我当前的代码:
c++ - 用一对 std::arrays c++11初始化映射
我想编译这些行。插入以映射一对 std::arrays。
c++ - 为什么常量变量有时不被视为编译时常量
我试图执行两种不同的场景:
场景一:
在这里,arraySize 被视为编译时间常数,因此它在 std::array 中是允许的。
场景二:
在方案 2 中,尽管 arrySize 是 sz 的常量副本,但仍不将 arraySize 视为编译时间常量。
为什么这两种情况被区别对待?