将 C cstyle 数组视为 std::array

2023-12-23

是否有任何安全且符合标准的方法可以将 C 样式数组视为 std::array 而不将数据复制到新的 std::array 中?

这显然无法编译,但却是我想要的效果(我的实际使用更复杂,但这个简短的示例应该显示我想要做的事情)。我想reinterpret_cast会“起作用”,但可能不安全?

#include <array>

int main()
{
    int data[] = {1, 2, 3, 4, 5};

    // This next line is the important one, treating an existing array as a std::array
    std::array<int, 5>& a = data;
}

感觉应该是可能的,因为数据应该以相同的方式存储。

edit:需要明确的是,我不想清除新的 std::array,我想将现有数据引用为一个。


正如这篇文章中所讨论的如果 T 是 POD,std::array 是否保证是 POD? https://stackoverflow.com/questions/3674247/is-stdarrayt-s-guaranteed-to-be-pod-if-t-is-pod

std::array<int, N>是 POD,因此是标准布局。据我了解标准布局要求,这意味着指向对象的指针与指向第一个成员的指针相同。由于 std::array 没有私有/受保护的成员(根据http://en.cppreference.com/w/cpp/container/array http://en.cppreference.com/w/cpp/container/array),这应该与包装数组中的第一个元素一致。因此像

reinterpret_cast< std::array<int, 5>* >( &data )

我认为保证可以按标准工作。但我必须承认,有时我在解释标准语言时遇到困难,所以如果我错了,请纠正我。

问候 克拉斯

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 C cstyle 数组视为 std::array 的相关文章

  • 将 Google 云端硬盘访问权限委派给服务帐户失败

    我参与构建了一个内部使用的应用程序 用户可以通过该应用程序上传文件 并将其存储在 Google Drive 中 由于建议不要使用服务帐户作为文件所有者 因此我希望代表公司系统管理员有权访问的指定用户帐户上传应用程序 我已经创建了该应用程序以
  • pop() 期间提升 Fibonacci 堆访问冲突

    Context 我目前正在实现某种形式的 A 算法 我决定使用 boost 的斐波那契堆作为底层优先级队列 我的图表是在算法运行时构建的 作为我使用的顶点对象 class Vertex public Vertex double double
  • 在 Windows 应用商店应用程序 (Win 8.1) 中使用 MIDI

    我的目标是在 Windows 应用商店应用程序中接收 MIDI 消息 微软提供了一个名为Microsoft WindowsPreview MidiRT 作为 nuget 包 我设法获得了 MIDI 端口 但是MessageReceived尽
  • 在 C 中使用模板函数的最短示例?

    我如何处理函数echo tpl可以采取1类型参数int or string 然后打印出来 C没有模板 我认为你能做的最好的事情就是使用联合或让函数具有不同的名称 后一种具有不同名称的方法是准标准方法 例如fabs fabsf fabsl a
  • 如何向 Iron Python 添加模块?

    我一直在尝试使用 C Visual Studio 执行以下 Python 代码 graphcreater py 我通过 NuGet 包管理器添加了 IronPyton 2 7 7 和 IronPython StdLib 2 7 7 一旦我运
  • 什么是合适的 NHibernate / Iesi.Collections.Generic.ISet 替代品?

    在最新版本的 Iesi Collections 中缺少 Iesi Collections Generic ISet 似乎有三种选择 链接哈希集 只读集 同步集 Iesi Collections Generic ReadOnlySet 似乎最
  • 在 UserControl C# .NET 中添加/停靠控件

    我正在编写一个 UserControl 它以编程方式添加子控件 目前我正在添加新的控件 如下所示 this Controls Add new Control Height 16 Dock DockStyle Top 我遇到的问题是新控件添加
  • 如何重命名 MacOS/X 程序中的程序名称菜单标签?

    我有一个在 MacOS X 下运行的基于 Qt 的 GUI 程序 我希望能够更改该程序的第一个菜单标题的标签 即此屏幕截图中用红色圈出的标签 有没有一种编程方法可以做到这一点 假设不存在基于 Qt 的解决方案 则 Objective C 本
  • 为什么 VS 2008 在 Intellisense 中不显示 String 类的扩展方法

    由于 String 实现了IEnumerable
  • 开始学习 C# 的最佳方式是什么?

    我对 vb 6 有一点编程经验 而 vb net 则不多 请告诉我成为专家 C 程序员的最佳方法 我知道这需要很长时间 想想你如何学习人类语言 阅读 写作 口语和听力 阅读代码 阅读文章 阅读示例 当您更有经验时 请查看您使用的一些项目的源
  • 来自“void *”的dynamic_cast

    根据this https stackoverflow com questions 3155277 cannot dynamic cast void to templated class void 没有 RTTI 信息 因此从void 不合法
  • 在 Silverlight 中调用 WCF 服务时使用 Observable.FromEvent

    我正在尝试使用 NET Reactive Framework 来简化对我正在编写的 Silverlight 3 应用程序使用的 WCF 服务的一些异步调用 问题是我很难找到一种有效的方式来构建我的代码 毫无疑问 部分问题是了解 Reacti
  • 网页上的富文本编辑器

    我正在尝试在我的网页中添加一个富文本编辑器 用户可以在其中撰写评论并格式化他们所写的内容 类似于我们在此网站上撰写帖子的编辑器 谁能指出我关于此的正确方向 任何可以帮助我构建这样一个组件的教程 我还想要一个免费的产品 忘记之前提到 类似的东
  • 查询 XmlDocument 而不会出现“命名空间前缀未定义”问题

    我有一个 Xml 文档 它定义并引用了一些命名空间 我将其加载到 XmlDocument 对象中 据我所知 我创建了一个 XmlNamespaceManager 对象 用于查询 Xpath 问题是我收到命名空间 my 未定义的 XPath
  • C# 中的任意精度小数?

    是否存在任意精度decimal类可用于 C 吗 我见过几个任意精度整数类 但这并不完全相同 您可以使用 J 库java math BigDecimal类 如果已安装 只需添加一个引用即可vjslib me remembers one of
  • 使用二维动态数组编写一个类

    我有一个家庭作业 我并不是在寻找任何人为我做这项工作 我只是在一个小方面遇到了麻烦 尽管我也接受其他方面的建议 任务是 使用二维动态数组编写一个类 构造函数传入数组的维度 构造函数还将动态数组中的所有值初始化为行索引乘以列索引 交换二维数组
  • 当调试器退出且没有调用堆栈时,用于跟踪 C# 崩溃的工具?

    我有一个大型 复杂的 C GUI 应用程序 它以完全可重现的方式崩溃 但我无法轻松诊断崩溃的原因 因为调试会话不是以通常的方式使用调用堆栈破坏调试器 而是完全退出 唯一的提示是输出窗口末尾有一条消息 STATUS STACK BUFFER
  • 我使用 difftime 的 c 函数有时会返回 65535

    我有一个函数 使用 difftime 来检测自通信心跳停止以来的时间 以秒为单位 该函数的运行速度可以达到每 50 毫秒一次 该函数似乎可以工作 除了偶尔返回 65535 之外 我可以将执行次数减少到每秒一次 因为 difftime 的返回
  • Xamarin - iOS 地图上的多个多边形

    我目前正在关注this https developer xamarin com guides xamarin forms application fundamentals custom renderer map polygon map ov
  • 使用 CRTP 模式时继承中的不明确方法

    我正在定义一个DoubleWrapper类继承自两个 CRTP 基类 Ratioable and Divable 两者都定义operator 具有不同的签名 T operator double const scalar const retu

随机推荐

  • 无法解析来自根提供程序的范围服务。 ASP.NET MVC 应用程序

    我正在使用 Adam Freeman 的 Pro ASP NET Core MVC 6th Edition 制作商店应用程序 书中的例子是用Core 1 0做的 我用的是Core 3 0 在尝试将数据播种到我的数据库 entityFrame
  • github:没有可用的受支持的身份验证方法

    我使用 github 并在过去在我的笔记本电脑上成功添加和同步了文件 最近我开始得到 PuTTY 致命错误 已断开连接 没有可用的支持的身份验证方法 运行后 git pull origin master 或push however ssh
  • 如何阻止html模板转义

    我有一个 html 模板 我想在其中插入一些模板本身外部的 JavaScript 代码 在我的模板数据结构中 我创建了一个字符串字段JS string并调用它 JS 问题是浏览器中的所有内容都被转义了 换行符是 n lt and gt ar
  • 真正的 MVVM 和第三方控件

    在 True MVVM 模型中 我们不期望 xaml cs 中隐藏任何代码 也不期望 viewModel 具有视图引用 然而 所有第三方控件都不能为 True MVVM 提供良好的支持 就我而言 我使用 Infragistics xamDa
  • C/C++ 中的可变参数函数和参数赋值

    我想知道在 C C 语言中是否可以以键值形式将参数传递给函数 例如在 python 中你可以这样做 def some function arg0 default value arg1 value1 passed value some fun
  • 动态向groovy中的对象添加属性或方法

    是否可以在 Groovy 中动态向对象添加属性或方法 这是我到目前为止所尝试过的 class Greet def name Greet who name who 0 toUpperCase 1 1 def salute println He
  • 显示文件夹中的图像(幻灯片)

    我一直在尝试谷歌搜索并找出如何制作一个 php 脚本 该脚本将自动制作文件夹中图像的幻灯片 我只设法让图片自动显示在 php 页面上 但我可以不知道如何让它们一张一张地滑动 就像幻灯片一样 Here http iseeit no page
  • HTML5 表单验证的条件规则

    我想知道是否可以根据其他元素状态设置 必需 元素 例如 假设我有一个输入元素 当且仅当用户选中特定复选框时 我希望该元素成为 必需 首先 这是否可以在不使用 JavaScript 的情况下完成 其次 如果我们使用 JavaScript 如果
  • tcl lsearch 在列表列表中

    Tcl中有一个list列表 set somelist aaa 1 bbb 2 ccc 1 如何搜索列表中第一项是 bbb 的元素 我尝试了这种方法 但它不起作用 lsearch somelist bbb Thanks Use index 它
  • 具有对象类型支持的 .Net 第三方 Oracle 提供程序

    我正在寻找完全支持 Oracle 对象类型 如几何图形 的第三方 Oracle Data Provider for Net ADO NET 我愚蠢地使用了 ODP NET 现在我付出了代价 它有令人难以置信的错误 我刚刚到达终点 继续崩溃
  • Python 对象的可选链接:foo?.bar?.baz

    在 JavaScript 中 如果我不确定链中的每个元素是否存在 不是未定义 我可以这样做foo bar 而如果bar不存在于foo 解释器会默默地将其短路并且不会抛出错误 Python中有类似的东西吗 现在 我一直这样做 if foo a
  • 尝试在 vscode powershell 终端中使用命令 git init 但出现错误: git : The term 'git' is not recognize as the name of a cmdlet

    我正在尝试使用该命令git init 但是 我收到此错误 git The term git is not recognized as the name of a cmdlet function script file or operable
  • Azure Functions - 无法加载文件或程序集“Microsoft.WindowsAzure.Storage”

    即使我在 project json 文件中指定了依赖项 我有一个天蓝色函数也会抛出以下错误 无法加载文件或程序集 Microsoft WindowsAzure Storage Version 8 1 1 0 Culture neutral
  • 具有多个参数的 PostgreSQL 聚合

    我一直在尝试在 PostgreSQL 8 4 或 9 1 中创建接受一个或多个选项参数的聚合 一个例子是创建一个PL R计算第 p 个分位数的扩展 其中0 lt p lt 1 这看起来像quantile x p 并作为查询的一部分 sele
  • 为什么无法创建分区表

    我正在尝试创建带有分区的简单表 这是我的命令 CREATE TABLE measurement city id int not null logdate date not null peaktemp int unitsales int PA
  • Mongo DB 3.0.7(安装在 Amazon EC2 上)上的远程和本地身份验证失败

    我创建了一个管理员用户 gt db createUser user administrator pwd password roles role userAdminAnyDatabase db admin Successfully added
  • .Net FtpWebRequest 有时会失败

    我尝试使用 FtpWebRequest 列出文件详细信息 但经常失败并出现 WebException 并显示错误 530 用户未登录 有时使用相同的凭据可以正常工作 这怎么可能 代码摘录 reqFTP FtpWebRequest FtpWe
  • 在 Rust 中迭代切片的值而不是引用?

    当循环结构体切片时 我得到的值是一个引用 这很好 但是在某些情况下 必须编写很烦人var as var 在很多地方 有没有更好的方法来避免重新声明变量 fn my fn slice MyStruct for var in slice let
  • 如何定义“AT-POS”方法?

    我定义了AT POS类的方法并导出 操作员 当我使用 然而 在该类的实例上 编译器忽略了我定义的运算符 这是代码 unit module somelib class SomeClass is export method AT POS ind
  • 将 C cstyle 数组视为 std::array

    是否有任何安全且符合标准的方法可以将 C 样式数组视为 std array 而不将数据复制到新的 std array 中 这显然无法编译 但却是我想要的效果 我的实际使用更复杂 但这个简短的示例应该显示我想要做的事情 我想reinterpr