stdarray相关内容
在我的程序中,我经常需要拥有一个像数组一样的容器--即用于连续存储在内存中的数据,但向量太灵活了,没有它应有的实用或效率。 需求与std::vector在一个或多个方面不同,例如: 只能在结尾处插入元素,不能移动其他元素 构建/编译后不能更改容量 构造/编译后不能更改大小 存储是类固有的,不涉及分配器 对于单个类型没有奇怪的特殊大小写,如std::vector 引
..
在 g++ 4.9.2 和 5.3.1 上,此代码需要几秒钟才能编译并生成 52,776 字节的可执行文件: #include #include 主函数(){constexpr std::size_t 大小 = 4096;结构 S{浮动 f;S() : f(0.0f) {}};std::array一个 = {};//
..
假设类型 foo_t 具有命名构造函数习惯用法 make_foo().现在,我想要正好有 123 个 foo ——不多也不少.所以,我正在考虑一个 std::array.现在,如果 foo_t 是默认可构造的,我会写: std::arraypity_the_foos;标准::生成(标准::开始(pity_the_foos),标准::结束(pity_the_foos),[]
..
这里有 8 种在 C++11 中声明和初始化数组的方法,在 g++ 下似乎没问题: /*0*/std::arrayarr0({1, 2, 3});/*1*/std::arrayarr1({{1, 2, 3}});/*2*/std::arrayarr2{1, 2, 3};/*3*/std::arrayarr3{{1, 2, 3}};/
..
我怎样才能使 a3 编译? int main(){int a1[] = { 1, 2, 3 };std::arraya2 = { 1, 2, 3 };std::arraya3 = { 1, 2, 3 };} 在使用初始化列表时,对数组的大小进行硬编码是非常不方便且脆弱的,尤其是长列表.有什么解决办法吗?我希望如此,否则我会很失望,因为我讨厌 C 数组,而 std::a
..
使用 C++11 std::array,我是否可以保证语法 std::array;x; 将默认初始化数组的所有元素? 编辑:如果没有,是否有适用于所有数组(包括零大小数组)的语法来将所有元素初始化为其默认值? 编辑:在 cppreference 上,默认构造函数描述说: (constructor) (隐式声明) (public member function)默认构造或复制构造数组的
..
在 g++ 4.9.2 和 5.3.1 上,这段代码需要几秒钟的时间来编译并生成一个 52,776 字节的可执行文件: #include #include int main(){constexpr std::size_t 大小 = 4096;结构体{浮动 f;S() : f(0.0f) {}};std::arraya = {};//
..
在 C++11 中,它允许您像这样创建 0 长度的 C 数组和 std:array: int arr1[0];std::array arr2; 所以我在想一个没有空间存储的数组有什么用? 其次,什么是零长度数组?如果是指针,它指向哪里? 解决方案 你的第一个例子不是标准的 C++,而是 一个gcc 和clang 允许的扩展,它是灵活数组 以及这个这个问题的答案:真的需要灵活的数组成员
..
让我们假设我要编写一个包含成员constexpr std :: array的结构,该结构包含前N个小纤维,其中N是模板参数. 类似这样的东西,但是在编译时可以使用vals: 模板struct first_n_fibs {static_assert(N> 0);静态const std :: arrayvals;静态std :: arrayini
..
我有一个属于该类的size变量.我想将其用作std :: array的大小,但我无法做到这一点.我找到了一些有关constexpr的文章,但到目前为止没有任何用处.你能帮我吗? #include#includeMyClass类{私人的:整数大小;//变量我需要复制内容并使之恒定.无效calculateSize(int x){大小= 2 * x;}上市:我的课
..
鉴于 std :: array :: size 是constexpr,在下面的代码段中 Foo1 :: u 不是 static 成员为什么重要?该类型在编译时是已知的,因此它的 size()也是如此. Foo2 :: bigger()有什么问题? 列表: //x86-64 gcc 10.1//-O3 --std = c ++ 20 -pedantic -Wall -We
..
我想使用2d std :: array,因为我必须在程序的特定位置使用绑定检查.对于一维数组,我会这样做: #include#includeint main(){std :: arraymyarray;为(int i = 0; i
..
我想创建一个 std :: array 的对象,但是问题是我只能使用返回 constexpr 类型的函数,否则编译器会抱怨.这里的问题是,我需要根据另一个数组的大小来计算该数组的长度,这可能是这样的: 模板struct DataLength{模板size_t maxPossibleLength(开始,结束){size_t m_
..
对不起,我觉得 std :: array 打算替代常规数组的STL。但是因为必须将数组大小作为模板参数传递,所以它阻止我们创建仅在运行时知道大小的 std :: array 。 std :: array nums {1,2,3}; //有效。 constexpr size_t size = 3; std :: array nums {1
..
可以构造具有特定值的 std :: array (在编译时使用较新的C ++版本),例如 std :: array a {1,4,9}; 但是-它没有构造函数,也没有标准库命名的构造函数惯用语,只取一个值并将其复制。也就是说,我们没有: std :: array a {11}; // a == std :: array {11,11
..
我正在编写一些处理密码秘密的代码,并创建了std::pmr::memory_resource的自定义ZeroedMemory实现,该实现可处理释放时的内存清理并使用必须使用的魔术进行封装,以防止优化编译器被淘汰离开手术.这样做的目的是避免专门化std::array,因为缺少虚拟析构函数意味着在类型擦除之后进行破坏会导致释放内存而不进行清理. 不幸的是,我后来才意识到std::array不是A
..
#include using std::array; constexpr auto d1=2; constexpr auto d2=3; constexpr auto d3=4; // stacked std::array using arr_t = array; using arr2d_t = array; using arr3d_t
..
将std::array传递给的方式是什么 这样的功能: template void safe_func(char (&dest)[N]); ? 我尝试这个: #include template using SafeArray = char[N]; template void
..
我想知道当初始数组值是构造函数的参数时,在构造函数中初始化类的std::array成员的正确方法是什么? 更具体地说,请考虑以下示例: class Car { public: Car(const std::string& color, int age): color_(color), age_(age) {} // ... private: std::s
..
#include #include #include class C { private: std::string a; std::string b; std::string c; public: C(std::string a_, std::string b_, std::string c_) : a{a_
..