如何通过引用将数组传递给函数模板

2023-11-24

我正在学习 C++ 模板概念。我不明白以下内容。

#include <iostream>
#include <typeinfo>

using namespace std;

template <typename T>
T fun(T& x)
{
 cout <<" X is "<<x;
 cout <<"Type id is "<<typeid(x).name()<<endl;
}


int main ( int argc, char ** argv)
{
   int a[100];
   fun (a);
}

我在尝试什么?

1) T 乐趣 (T & x)

这里 x 是一个引用,因此不会将 'a' 衰减为指针类型, 但在编译时,我收到以下错误。

 error: no matching function for call to ‘fun(int [100])’

当我尝试非引用时,效果很好。据我了解,数组已退化为指针类型。


C 风格数组是非常基本的构造,不能像内置类型或用户定义类型那样进行赋值、复制或引用。要达到通过引用传递数组的等效效果,您需要以下语法:

// non-const version
template <typename T, size_t N>
void fun( T (&x)[N] ) { ... }

// const version
template <typename T, size_t N>
void fun( const T (&x)[N] ) { ... }

请注意,这里数组的大小也是一个模板参数,以允许函数在所有数组大小上工作,因为T[M] and T[N]对于不同的情况来说不是同一类型M, N。另请注意,该函数返回 void。正如已经提到的,无法按值返回数组,因为数组不可复制。

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

如何通过引用将数组传递给函数模板 的相关文章

  • 部署 MVC4 项目时出错:找不到文件或程序集

    过去 我只需使用 Visual Studio 2012 发布到 AWS 菜单项即可部署我的 MVC4 网站 到 AWS Elastic Beanstalk 现在 程序可以在本地编译并运行 但无法部署 从消息来看 它似乎正在寻找不在当前部署的
  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • 模板类的不明确多重继承

    我有一个真实的情况 可以总结为以下示例 template lt typename ListenerType gt struct Notifier void add listener ListenerType struct TimeListe
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 为什么 POSIX 允许在只读模式下超出现有文件结尾 (fseek) 进行搜索

    为什么寻找文件结尾很有用 为什么 POSIX 让我们像示例中那样在以只读方式打开的文件中进行查找 c http en cppreference com w c io fseek http en cppreference com w c io
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • 使用安全函数在 C 中将字符串添加到字符串

    我想将文件名复制到字符串并附加 cpt 但我无法使用安全函数 strcat s 来做到这一点 错误 字符串不是空终止的 我确实设置了 0 如何使用安全函数修复此问题 size strlen locatie size nieuw char m
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co

随机推荐

  • 如何在android中将EditText提示创建为带有图像的文本

    如何在 android 中使用文本和图像创建 EditText 提示 占位符 我这样写
  • xargs sh -c 跳过第一个参数

    我正在尝试编写一个使用 find 和 xargs 将旧文件存档在大目录中的脚本 这是该行 find tmp messages mtime 9 print0 xargs x t 0 n 1000 sh c tar rPf tmp backup
  • 如何允许覆盖 ASP.NET Core 应用程序中的 blob?

    用户可以在创建记录时上传图像 但当您编辑该记录并尝试上传新图像时 会出现 此 blob 已存在 错误 有没有办法可以在我的应用程序中启用同名 blob 的覆盖 这是我处理更新过程的代码 值得注意的是 我创建了图像的三个迭代 为了应用程序的缘
  • Alexa Top 10000 SitesTop Sites 2023 - 2023最新刚更新 全世界流量排名10000的网站

    这个问题在这里已经有答案了 我使用 PhpDocumentor2 来生成文档 我搜索了这个主题 但找不到它的具体规则 例如 我有一个名称为 AddressField 的类 我想将 addressFields 指定为 AddressField
  • Rails:验证链接 (URL) 的好方法是什么?

    我想知道如何最好地验证 Rails 中的 URL 我正在考虑使用正则表达式 但不确定这是否是最佳实践 而且 如果我要使用正则表达式 有人可以向我推荐一个吗 我对正则表达式还是新手 验证 URL 是一项棘手的工作 这也是一个非常广泛的要求 你
  • 如何在Unity中对网格进行布尔运算?

    I have Cube模型和Cylinder模型 我想在里面打个洞Cube by Cylinder 我怎样才能做到呢 我有这两个模型 我想做这个 This is 网格上的布尔运算 Use this线程以了解更多信息 这是来自的存储库GitH
  • 新项目有什么理由使用 log4j 而不是 Logback? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我知道共同意见是 Logback gt log4j 不过 log4j 有什么比 Logback 更好的地方吗 有什么理由使用 log4j 而不是 logback 事实上它只有 60 个关于
  • Google Play 应用更新 - 无法发布新的 apk

    当我尝试在 Google Play 中发布新的 APK 时 出现以下错误 禁止将之前使用M权限 目标SDK 23及以上 的设备降级为使用旧式权限 目标SDK 22及以下 的APK 从版本 2645 目标 SDK 23 到版本 2648 目标
  • 如何在 Android 中获取类似波形的声音云

    我用我的代码生成了一个简单的波形 如下图所示 但我想在每条线之间留出更多间隙 我希望它像声云波一样 如下图所示 这是我的代码 public class VisualizerView extends View private static f
  • 使用 XOR 在 JavaScript / HTML5 中绘图以删除旧的精灵

    我正在为一个小游戏构建引擎 现在我刚刚得到了一个带有两只小眼睛的红色圆圈作为主角 我有keyPress函数来检测运动 这很有效 但我想使用我很久以前在 QBASIC 中使用过的东西来删除角色并在新位置重画 XOR 基本上 在按键时会发生这种
  • Spring安全注销处理

    根据春季安全4 0 0文档 4 2 4 注销处理 logout 元素添加了对通过导航到注销的支持 特定的网址 默认注销 URL 是 logout 但你可以设置它 使用 logout url 属性进行其他操作 更多信息 其他可用的属性可以在命
  • 是否可以在卸载前弹出窗口中显示自定义消息?

    使用时window onbeforeunload or window on beforeunload 是否可以在该弹出窗口中显示自定义消息 也许是一个适用于主流浏览器的小技巧 通过查看现有的答案 我感觉这在过去使用类似的东西是可能的conf
  • 使用 Filesaver.js 保存 Base64 图像

    我收到 JPG 图像的多个 Base64 URI 我需要将它们保存为 jpg 文件 我正在尝试使用文件保存器 js 但它不适合我 我之前使用过filesaver js 当时我从aws sdk获取图像 其中数据是缓冲区形式并且它有效 但是 它
  • 在Python中重新分配变量[重复]

    这个问题在这里已经有答案了 我有以下代码和变量 我想找到变量是什么a a1 a2 b b1 and b2代码执行后参考 def do something a b a insert 0 z b z b a a b c a1 a a2 a b
  • 在 ASP.NET Core 中检测移动设备

    我有一个应用程序 它使用移动视图和桌面视图作为不同的 html 页面 现在我将其转移到 Asp Net core 由于一些技术原因 我没有考虑 Bootstrap 我必须检测请求是来自移动设备还是不在启动中才能加载相应的布局页面 我怎样才能
  • Typescript+webpack:Typescript 没有发出 index.d.ts 的输出

    我跟着本教程成功设置 typescript webpack 无反应 一切都很好 直到我将 index d ts 文件添加到我的组件文件夹中 我用它来导出所有模块 例如 export from MyClass1 export from MyC
  • Java Swing:库、工具、布局管理器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 您的 Java Swing
  • Python的复杂度是subset()

    给定两个集合 A 和 B 及其长度 a len A 和 b len B 其中 a gt b Python 2 7 的 issubset 函数 即 B issubset A 的复杂度是多少 我从网上找到了两个相互矛盾的答案 1 O a 或 O
  • Qt 中的 SIGNAL 和 SLOT 宏:它们的作用是什么?

    我是 Qt 的初学者并试图理解SIGNAL and SLOT宏 当我学习使用connect绑定信号和槽的方法 我发现Qt官方参考页上的教程使用 connect obj1 SIGNAL signal int obj2 SLOT slot 然而
  • 如何通过引用将数组传递给函数模板

    我正在学习 C 模板概念 我不明白以下内容 include