查找迭代器的值类型

2023-12-01

我有一个模板参数InIter在我的一个重载函数中,我需要调用for_each_n循环使用InIter for x迭代,这对我来说没有任何困难。但我无法获得值类型迭代器的,举个例子:

//invalid lambda function
for_each_n(param1, param2, param3,
    [val](InIter it) {
        *it = val;
    });

然而这不起作用,我需要传入 InIter 的值类型而不是整个迭代器。这个例子在下面确实有效,但显然我不能只保留类型std::size_t否则我将被迫只创建std::size_t容器。

for_each_n(param1, param2, param3,
    [val](std::size_t& v){
        v = val;
    });

怎么做..

要获取迭代器的值类型,您应该使用std::iterator_traits from <iterator>,这将使得很容易获得包裹的值类型,并且足够通用,您甚至可以将它与pointers.

std::iterator_traits<InIter>::value_type
std::iterator_traits<char       *>::value_type                     => char
std::iterator_traits<char const *>::value_type                     => char const
std::iterator_traits<std::vector<int>::iterator      >::value_type => int
std::iterator_traits<std::vector<int>::const_iterator>::value_type => int const

选择

如果你正在写C++11,并有一个实例InIter,也可以使用decltype获得类型*it,这实际上(在大多数/所有情况下)与std::iterator_traits<T>::value会产生。


执行

从您的示例片段来看,您似乎并不想要值类型的迭代器,对实际更感兴趣参考类型,下面是一个示例实现:

for_each_n(param1, param2, param3,
  [val](typename std::iterator_traits<InIter>::reference v){
    v = val;
  }
);
for_each_n(param1, param2, param3, [val](decltype(*some_it) v){
  v = val;
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找迭代器的值类型 的相关文章

随机推荐

  • Postgres LIKE '...%' 不使用索引

    我有一个表 我想在其中通过主键的前缀进行搜索 主键的值如下03 000221 1 03 000221 2 03 000221 3等等 我想检索所有以03 000221 我的第一个想法是过滤LIKE 03 000221 认为 Postgres
  • 减少非空开关案例声纳棉绒问题的数量

    我的开关盒内有大约 100 个非空盒子 每种情况调用不同的函数 Sonar 正在显示将非空开关案例数量减少到最多 30 个的问题 是否有任何替代方案来实现此类开关案例 或者拥有任意数量的开关案例都没有问题 for int i 0 i
  • 下游 Jenkins 项目上游运行参数错误

    我在 Jenkins 构建管道方面遇到问题 第一个作业之后的所有作业均使用第一个作业的 运行参数 进行参数化 默认情况下 这应该引用第一个作业的最新稳定版本 每个后续作业都使用第一个作业的 运行参数 来访问第一个作业中保存的工件 每个后续作
  • 动态更改对讲语言?

    我有一个带有翻译测验的应用程序 我想让盲人也可以使用它 问题是 当我专注于西班牙语句子 例如 时 Talkback 会用英语读出它 有没有办法在Java中动态触发西班牙语TTS 谢谢 是的 现在有 你必须把字符串包裹在一个LocaleSpa
  • Maven 原型中的公爵年龄在哪里?每第一杯 JEE7

    我正在关注EJB 的 JEE7 第一杯方向 在基于原型创建应用程序之前 您必须 首先将原型和支持项目安装到本地 Maven 存储库 In NetBeans IDE select File then Open Project navigate
  • 如何将 Visual Foxpro dbfs 与 MySQL 同步?

    我正在尝试将遗留应用程序 将数据存储在 VisualFoxpro dbfs 中 同步到 MySQL 或 SqlServer 2005 这将使我们能够在线查看某些信息 我每天至少需要两次同步 我怎样才能做到这一点 我不知道有任何现成的软件可以
  • 了解task_basic_info任务resident_size

    简短的问题 某人 引 5 告诉我驻留内存可以被我的系统回收 这是什么意思 这是否意味着我的应用程序没有使用该内存 或者驻留内存值是否与我的应用程序当前使用的内存直接相关 除了这些之外 我还没有找到太多关于此的文档answers 我正在尝试解
  • Javascript弹出窗口焦点问题

    我想创建一个 弹出窗口 每次单击按钮时都会获得焦点 下面的函数可以很好地执行onclick事件 但当父页面刷新并从 onload 事件执行时 不会按预期执行 这是我的功能 function PopupDelete delete images
  • 快速 numpy 滚动_产品

    我需要一个rolling product函数 或者一个expanding product函数 有各种pandas rolling XXXX and expanding XXXX功能 但我惊讶地发现没有expanding product 功能
  • 抽象类和 PyMongo;无法实例化抽象类

    我创建了空的抽象类AbstractStorage并继承了Storage来自它的类 import abc import pymongo as mongo host mongo MongoClient print host alive True
  • Android - 使用服务在浮动窗口上播放 YouTube Api 播放器

    我喜欢在 Android 上将 YouTube 播放器实现为浮动窗口 位于所有应用程序之上 我看到很多应用程序都具有相同的功能像这个 我尝试了解如何实施它 我试过这个 wm WindowManager getSystemService Co
  • 如何在单选按钮中添加jquery验证红框效果

    如果 jQuery 验证像示例图片中那样激活 我想制作一个红色阴影框 红色边框 有人可以帮我解决这个问题吗 我的代码如下所示 document ready function var month day year for var i 1 i
  • 消除 ggplot y 轴和第一个 x 值之间的间隙

    我需要消除 x 轴上 1950 年之前的间隙 我尝试过使用scale x continuous但这会导致 Error Discrete value supplied to continuous scale 我相信这一定与数据的日期格式有关
  • 单击时确定句子的字符

    在一次随机休息时 我发现自己想知道是否可以使用 jQuery 来确定单击句子中的单个字符 例如 This 当用户第一次点击h jQuery 会将其返回给我 我能想到的唯一方法是将句子中的每个字符用其字母的类别包装在一个跨度中 如下例所示 s
  • Neo4J Cypher - 匹配节点的关系计数

    我正在开发一个小项目 我必须在 Twitter 等用户之间保持关注 我正在尝试进行一个查询 返回某个节点的追随者 我们将其称为 X 节点 因此 查询返回 X 的关注者以及 X 的关注者的关注者计数 以及 X 的关注者关注的节点数 包括该计数
  • 如何使用 HTML/CSS/JavaScript 开发桌面应用程序? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 首先 我对专业地做这件事不感兴趣 我是一名 Web 开发人员 我的一位同事最近离开 Spotify 并表示他将主要从事 Spotify 桌面应用程序的 JavaScript 工作
  • Ansible 命令模块显示“|”是非法字符

    我正在使用 Ansible 部署我的项目 并尝试检查是否安装了指定的包 但我的任务有问题 以下是任务 name Check if python apt is installed command dpkg l grep python apt
  • PHPMailer字符编码问题

    我尝试使用PHPMailer发送注册 激活 等邮件给用户 require class phpmailer php mail gt charSet UTF 8 mail new PHPMailer mail gt IsSMTP mail gt
  • Angular:我在注入器模块上不断收到此错误

    我正在制作一个有角度的应用程序 它不断出现此错误 未捕获的错误 injector modulerr http errors angularjs org 1 4 9 injector modulerr p0 webinarApp p1 错误
  • 查找迭代器的值类型

    我有一个模板参数InIter在我的一个重载函数中 我需要调用for each n循环使用InIter for x迭代 这对我来说没有任何困难 但我无法获得值类型迭代器的 举个例子 invalid lambda function for ea