当前位置: 首页 > 知识库问答 >
问题:

无法创建d::矢量

郭辉
2023-03-14

我可以创建constexprstd::数组:

constexpr std::array<int,5> values {1,2,3,4,5};

它很好用。但我无法创建constexpr向量:

constexpr std::vector<int> vec = {1,2,3,4,5};

这给了我一个错误:

类型“const std::vector”


共有3个答案

伯和蔼
2023-03-14

查看std::vector的initlializer\u列表

陶宏浚
2023-03-14

对于至少在c 2a之前的c版本:

std::vector使用动态内存分配。运算符new不能在constexpr方法中使用,因此std::vector永远不会是constexpr,不能为其声明constexpr构造函数std::array不使用动态内存分配,它是在堆栈中分配的。它与创建constexpr对象的规则没有任何问题,可以是constexpr。

高恺
2023-03-14
匿名用户

有一项建议是使std::vectorconstexpr:https://github.com/ldionne/wg21/blob/master/generated/p1004r1.pdf关于即将到来的C20/23变化,有一个完整的讨论:https://youtu.be/CRDNPwXDVp0?t=3080因此,请使用C20再次检查!

[编辑]:constepr std::vector已被批准用于c20!https://www.reddit.com/r/cpp/comments/au0c4x/201902_kona_iso_c_committee_trip_report_c20/

[编辑2019-10]: gcc主干(带有--std=c 2a标志)已经开始实现Constexr newConstexr向量的先决条件)。见:https://youtu.be/FRTmkDiW5MM?t=372

[编辑2021-11]:constepr std::vectorconstepr std::basic_string现在都在gcc 12中实现https://en.cppreference.com/w/cpp/compiler_support )

 类似资料:
  • 我的代码更长,但我没有复制所有的代码,我看到程序停在这里 对不起我的英语。

  • 问题内容: 我正在使用node.js,并将音频流式传输到我的node.js服务器。现在,我在构建音频Blob的过程中注意到: 我在新的Blob处收到ReferenceError。似乎不支持Blob。如何创建要使用node.js fs模块保存的Blob。 谢谢你们! 问题答案: 解决此问题的方法是创建一个可以在数组缓冲区和节点缓冲区之间转换的函数。 将二进制NodeJS缓冲区转换为JavaScrip

  • 我正在尝试基于此示例编写自己的代码。 我使用的是Spring Boot,所有依赖项都来自https://start.spring.io/ 这是我的知识库: 我的控制器的一部分: 我的Spring Boot: 我收到此错误: 我做错了什么?如果有必要,我可以发布更多类似实体的代码 我正在使用IntelliJ IDEA。

  • 我想在Eclipse中用for创建10个txt文件,但是为什么我这么做的时候会出错?

  • 我尝试用nginx创建docker容器容器。(Windows 10 64 bit) 并得到错误: 怎么解决这个? 更新。 尝试conf 但如何使用工匠? artisan:生成:上下文:。dockerfile:php.dockerfile容器\u名称:artisan卷:-./src:/var/www/html/public依赖于:-mysql工作目录:/var/www/html/public入口点:

  • 使用D3.js,我试图创建一系列SVG组(即元素),数据数组中的每个数字都有一个元素。每个元素本身应该包含一个和一个。在我看来,下面的代码应该做到这一点,但当我检查元素(在Chrome和Firefox中都是如此)时,它直接在元素中包含元素和元素,而看不到元素。 HTML页面最初只包含一个空的元素。只是一个简单的数字数组。