- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
考虑:
static constexpr unsigned num_points{ 7810 };
std::array< double, num_points > axis;
for (int i = 0; i < num_points; ++i)
{
axis[i] = 180 + 0.1 * i;
}
axis
是一个类范围的常量。我想避免像任何其他全局变量一样初始化它。可以在编译时完成吗?
这是最后一个类:
// https://www.nist.gov/pml/atomic-spectroscopy-compendium-basic-ideas-notation-data-and-formulas/atomic-spectroscopy
// https://www.nist.gov/pml/atomic-spectra-database
struct Spectrum
{
static constexpr unsigned _num_points{ 7810 };
using Axis = std::array< double, _num_points >;
static constexpr Axis _x{ [] () // wavelength, nm
{
Axis a {};
for( unsigned i = 0; i < _num_points; ++i )
{
a[ i ] = 180 + 0.1 * i;
}
return a;
} () };
Axis _y {}; // radiance, W·sr−1·m−2
};
代码和变量的混合是难看的,但至少公式就在读者的眼前。任何其他解决方案都需要大量输入才能获得类内定义的常量和类型。
或者如果我改变主意,我可以在运行时简单地返回 lambda。
最佳答案
为了完整起见,这里的版本不需要定义函数,而是使用 lambda。 C++17 引入了在常量表达式中使用 lambda 的能力,因此您可以声明数组 constexpr
并使用 lambda 对其进行初始化:
static constexpr auto axis = [] {
std::array<double, num_points> a{};
for (int i = 0; i < num_points; ++i) {
a[i] = 180 + 0.1 * i;
}
return a;
}();
(请注意最后一行中的 ()
,它会立即调用 lambda。)
如果您不喜欢 axis
声明中的 auto
,因为它使读取实际类型变得更加困难,但您不想重复该类型在 lambda 中,您可以改为:
static constexpr std::array<double, num_points> axis = [] {
auto a = decltype(axis){};
for (int i = 0; i < num_points; ++i) {
a[i] = 180 + 0.1 * i;
}
return a;
}();
关于c++ - 在编译时以算法方式初始化 std::array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56383454/
这个问题已经有答案了: How do I attach events to dynamic HTML elements with jQuery? [duplicate] (8 个回答) How to
我通常从问题代码开始写 git 注释,像这样: #3533: Fixed VIB (Very Important Bug) 当我从命令行执行提交时,我写 git commit -a -m "#3533
以下命令构建我的函数并将其发布到 Azure。但它总是在 Debug模式下构建 - 如何使其切换到在 Release模式下构建? func azure functionapp publish NAME
我需要在 virtualenv 中以 sudo 身份运行 python 脚本。但是,运行 sudo python 将运行全局 python 解释器,而不是来自 virtualenv 的解释器。 有办法
我想制作一个自定义按钮并在自定义按钮类内的选择器内提供输入,但它给我一个错误消息。我该如何修复它 我在 Playground 上测试它,因为当我运行到模拟器时应用程序崩溃了。这是 Playground
我是 Angular 的新手,ng-repeat 对我不起作用。 我的第一个 ng-repeat 有效,但我使用 json 字符串的第二个无效。它提示 ng-repeat dupes 但我不明白为什么
每当麦克风听到打响指的声音时,我都会尝试加 1。 var sketch = function (p) { with(p) { var mic; va
我在 ng build --prod 时遇到堆内存不足错误,是否有任何解决方法。当 --aot=false 时它的构建很好。 有什么想法吗? 最佳答案 尝试通过以下脚本在 json 包中运行构建脚本:
我正在尝试部署一个rest api,而不涉及任何类型的UI/html 文件。我只是想让它响应一些 json 响应主体,仅此而已。我使用 spring 和 java 11。此请求在 localhost
我正在使用 Tomcat 运行一个 Java 网络应用程序,我有我的 Java 类和 .jsp 文件呈现网络。我正在尝试实现一项功能,您可以在其中搜索文件中的关键字,然后返回文件,以便用户可以从网页上
我正在尝试实现一个由 Spring 提供支持的服务器发送事件 (SSE) 网页。我的测试代码执行以下操作: 浏览器使用 EventSource(url) 连接到服务器。 Spring 接受带有以下 C
我正在使用 Visual Studio Code 中的远程 SSH 扩展连接到 Azure 中的虚拟机。问题是我不能以 root 身份 ssh,但需要 root 权限来编辑/etc 文件夹中的某些文件
我们有一个作为 Windows 服务安装的 C# 控制台应用程序。目标 64 位计算机运行的是 Windows Server 2012。我们使用了 64 位 installutil 实用程序: C:\
我的计算机上安装了 VS2010 和 VS2012,并安装了 .NET Framework 4.0,然后我将其升级到 .NET Framework 4.5。但是,我仍在开发需要在 .NET Frame
我正在使用 Express 在 NodeJs 之上用 javascript 编写 CMS。我的目标是构建我在过去几年中每天都在 .NET 中构建的东西,但现在完全是在 javascript 中构建的。
我有以下 docker-compose.yml 文件: version: "3.3" services: api: build: ./api expose: - '80
如何在将数据插入到 Db 时以 asp.net mvc4 形式自动生成 GUID 我需要将 GUID 数据类型添加到我的表中,并且需要在提交其他数据时自动插入 16 位值 最佳答案 请检查以下链接..
我正在使用时刻时区,因此我可以从选定的时区转换为客户端的时区。 我无法以比这更好的方式实现它: convertSelectedTimeZoneToClients() { let timeZon
这个问题在这里已经有了答案: Empty body in fetch POST request (5 个回答) 3年前关闭。 在我的 React 应用程序中,当我提交表单以创建新用户时,我使用 fet
ngRouteProvider依赖注入(inject)出错可能是什么原因 注意:$location依赖于ngRoute,这就是为什么我需要注入(inject)它,而我并没有真正使用它,而只是使用$lo
我是一名优秀的程序员,十分优秀!