C++错误之路:conversion from ...const_iterator ... to non-scalar type ... requested

2023-11-05

出错代码

#include <vector>
#include <map>
#include <iterator>

using namespace std;

template <typename T>
void print1DVec(const vector<T>& vec){
    typedef typename vector<T>::iterator vecTiter;
    for(vecTiter iter = vec.begin(); iter != vec.end(); iter++)
        cout << *iter << '\t';
};

template <typename T, typename K>
void printMap(const map<T, vector<K> >& m){
    typedef typename map<T, vector<K> >::iterator mapTKiter;
    for(mapTKiter iter = m.begin(); iter != m.end(); iter++){
        cout << iter->first << " : ";
        print1DVec(iter->second);
        cout << endl;
    }
};

bug原因分析

bug描述:
conversion from ‘std::map<char, std::vector >::const_iterator {aka std::_Rb_tree_const_iterator<std::pair<const char, std::vector > >}’ to non-scalar type ‘mapTKiter {aka std::_Rb_tree_iterator<std::pair<const char, std::vector > >}’ requested

出错原因是print1DVec与printMap函数中形参为const,所以其this迭代器也需要使用常数迭代器。

修改方法1

使用const_iterator

template <typename T>
void print1DVec(const vector<T>& vec){
    typedef typename vector<T>::const_iterator vecTiter; \\ iterator --> const_iterator
    for(vecTiter iter = vec.begin(); iter != vec.end(); iter++)
        cout << *iter << '\t';
};
template <typename T, typename K>
void printMap(const map<T, vector<K> >& m){
    typedef typename map<T, vector<K> >::const_iterator mapTKiter; \\ iterator --> const_iterator
    for(mapTKiter iter = m.begin(); iter != m.end(); iter++){
        cout << iter->first << " : ";
        print1DVec(iter->second);
        cout << endl;
    }
};

修改方法2

使用auto,如果你的编译器支持C++11:

template <typename T>
void print1DVec(const vector<T>& vec){
    for(auto iter = vec.begin(); iter != vec.end(); iter++) \\ use auto
        cout << *iter << '\t';
};
template <typename T, typename K>
void printMap(const map<T, vector<K> >& m){
    for(auto iter = m.begin(); iter != m.end(); iter++){ \\ use auto
        cout << iter->first << " : ";
        print1DVec(iter->second);
        cout << endl;
    }
};

版权声明

来源于StackOverflow,转载请注明出处。

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

C++错误之路:conversion from ...const_iterator ... to non-scalar type ... requested 的相关文章

  • Exit() 时是否调用基本对象析构函数?

    我意识到这个问题已经出现过几次 但我试图获得上述问题的明确答案 但我不断遇到相互矛盾的信息 我需要知道的是 当我使用 exit 时 基本类对象是否被破坏 我知道需要删除动态内存 但我的意思更像是 include
  • Grpc - 将消息从一个客户端发送到连接到同一服务器的另一个客户端

    是否可以将消息从一个客户端发送到连接到同一服务器的另一个客户端 我想将数据从一个客户端发送到服务器然后发送到特定客户端 我想我需要获取客户端 ID 但我不知道如何获取此 ID 以及如何从服务器将此消息发送到该客户端 我这里有一个样本 这是一
  • 现代 C++ 编译器是否能够在某些情况下避免调用 const 函数两次?

    例如 如果我有以下代码 class SomeDataProcessor public bool calc const SomeData d1 const SomeData d2 const private Some non mutable
  • 未找到 Boost 库,但编译正常

    我正在尝试在 C 中使用 boost 的文件系统 使用时看起来编译没问题 c c Analyse c o Analyse o g W Wall L usr local lib lboost filesystem lboost system
  • 循环遍历 C 结构中的元素以提取单个元素的值和数据类型

    我有一个要求 我有一个 C 语言的大结构 由大约 30 多个不同数据类型的不同元素组成 typedef struct type1 element1 type2 element2 type3 element3 type2 element4 1
  • 在 C# 中,如何根据在 gridview 行中单击的按钮引用特定产品记录

    我有一个显示产品网格视图的页面 该表内有一列 其中有一个名为 详细信息 的超链接 我想这样做 以便如果用户单击该特定产品的详细信息单元格 将打开一个新页面 提供有关该产品的更多信息 我不确定如何确定哪个Product记录链接的详细信息以及我
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了
  • 在 C# 中检查 PowerShell 执行策略的最佳方法是什么?

    当你跑步时Get ExecutionPolicy在 PowerShell 中 它得到有效的执行政策 https learn microsoft com en us powershell module microsoft powershell
  • 是否使用 C# 数据集? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 C 中的数据集概念有点困惑 编码 ASP NET 站点 但这并不重要 在我的阅读中 我了解到它们 本质上 用作我的应用程序和我的
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • Visual Studio 2015:v120 与 v140?

    仅供参考 Win10 x64 我今天开始尝试 Visual Studio 2015 在弄清楚如何运行 C C 部分后 我尝试加载一个大型个人项目 该项目使用非官方的glsdk http glsdk sourceforge net docs
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • C++:二叉树所有节点值的总和

    我正在准备面试 我被一个二叉树问题困住了 我们如何计算二叉树所有节点中存在的值的总和 优雅的递归解决方案 伪代码 def sum node if node NULL return 0 return node gt value sum nod
  • 在 System.Type 上使用条件断点时出错

    这是函数 public void Init System Type Type this Type Type BuildFieldAttributes BuildDataColumns FieldAttributes 我在第一行设置了一个断点
  • 我可以使用 lambda 函数或 std::function 对象来代替函数指针吗?

    我有一个需要使用的库 它定义了以下内容 typedef void CallbackFunction const int i 并且有一个注册回调的函数 如下所示 void registerCallback CallbackFunction p

随机推荐

  • 2021-05-28

    什么是散列表 散列表 散列表 Hash table 也叫哈希表 是根据键 Key 而直接访问在内存存储位置的数据结构 也就是说 它通过计算一个关于键值的函数 将所需查询的数据映射到表中一个位置来访问记录 这加快了查找速度 这个映射函数称做散
  • 使用Qt编写模块化插件式应用程序

    动态链接库技术使软件工程师们兽血沸腾 它使得应用系统 程序 可以以二进制模块的形式灵活地组建起来 比起源码级别的模块化 二进制级别的模块划分使得各模块更加独立 各模块可以分别编译和链接 模块的升级不会引起其它模块和主程序的重新编译 这点对于
  • RabbitMQ--基础--10.2--死信队列

    RabbitMQ 基础 10 2 死信队列 1 死信队列 DLX queue 当消息在一个队列中变成死信之后 它能重新被发送到另一个交换机中 这个交换机就是 死信交换机 绑定 死信交换机 DLX Exchange 的队列就称之为死信队列 死
  • 语句执行顺序对判断语句条件的影响

    对比相同的输出结果下 不同的语句执行顺序对判断语句条件的影响 public class Homework1 public static void main String args 输出1 100偶数 每5个一行 一行中的每个数字之间使用逗号
  • 【深度学习】Loss Functions for Neural Networks for Image Processing

    在目前的深度学习中 业界主流主要还是把调整深度学习网络结构作为主要的工作重心 即使损失函数 loss functions 对整个网络的训练起着十分重要的作用 Nvidia和MIT最近发了一篇论文 loss functions for neu
  • 探索Java8——四大函数

    文章目录 Function接口 源码解析 Consumer 接口 Supplier 接口 Predicate 接口 其他的接口 函数接口 你可以理解为对一段行为的抽象 简单点说可以在方法就是将一段行为作为参数进行传递 这个行为呢 可以是一段
  • stm32制作bootloader时遇到的问题

    遇到的问题和解决方法 待验证 1 在下载的例程中做实验时有时出现BootLoader无法进入到应用程序中 将跳转函数前的延时加长至下图 暂时未出现问题 待验证 此处的0x2ffe0000需根据自身的ram空间修改 此处相当于0x1ffff
  • 动态规划算法的基本思想-求解步骤-基本要素和一些经典的动态规划问题【干货】

    文章目录 1 序 2 动态规划的基本概念 1 3 动态规划算法的基本思想 2 4 动态规划的求解步骤 2 5 动态规划算法的基本要素 2 5 1 最优子结构 5 2 重叠子问题 6 一些经典的动态规划问题 1 序 近期笔者会写一些博客 与大
  • 前端——Access to XMLHttp Request at...from origin has been blocked by policy

    前言 小编最近在做前端功能的时候碰到了这么一个错误 错误描述为 Access to XMLHttp Request at from origin has been blocked by policy 说实话 这个错误并没有怎么见过 甚至可以
  • 各种数据库连接字符串(EFCore)

    qlite Data Source Furion db MySql Data Source localhost Database Furion User ID root Password 000000 pooling true port 3
  • convertdate

    sample date 2015 09 10 00 00 00 2015 09 09 00 00 00 000 expect iso date add time zone 2015 09 10T00 00 00 0800 function
  • linux 如何支持2T以上的硬盘

    一 MBR 和 GPT 区别 1 1 MBR MBR分区表 即主引导记录 大家都很熟悉 是过去我们使用windows时常用的 所支持的最大卷 2T 而且对分区有限制 最多4个主分区或3个主分区加一个扩展分区 1 2 GPT GPT 即GUI
  • 数据结构之顺序串的基本操作——C语言

    include
  • STM32 ADC没有输入电压时,采集结果不为0

    目录 1 问题概述 2 问题分析 2 1 钳位二极管 2 2 反向漏电流 3 复用功能 4 总结 1 问题概述 硬件焊接完成后测试程序ADC采集功能 先通过接入3 3V来看下 结果发现三个通道可以采集到0V 3 3V 而另外三个通道在没有接
  • Gitee仓库 项目、本地项目、本地仓库的创建与关联

    Gitee仓库 项目 本地项目 本地仓库的创建与关联 1 登录Gitee仓库 没有可自行注册 2 创建git项目 填写信息 点击创建之后将会生成git项目路径 可先行复制 3 操作idea 创建本地仓库 我默认使用当前项目为仓库路径 点击O
  • 微服务引擎 MSE 全新升级,15 分钟快速体验微服务全栈能力

    作者 草谷 前言 微服务引擎 MSE 全新发布 新版本带来了一系列令人振奋的特性和改进 让您更轻松 高效地构建和管理微服务应用程序 从快速入门到迁移优化 MSE 为开发人员提供了全方位的支持和解决方案 无论您是刚刚接触微服务还是已经深耕其中
  • 解决OpenSSL SSL_read: Connection was reset, errno 10054问题

    1 复现问题 drawio是免费的画图神器 因而 今天尝试从github上下载drawio 如下图所示 复制下载地址到git bash中 却报出如下错误 即fatal unable to access https github com jg
  • axios+vue 网页请求

    div div
  • 【肥海豹】-网络安全等级保护(等保)-2020体系会-物联网学习笔记

    讲解专家 信息产业信息安全测评中心 张益老师 一 物联网安全概述 物联网 将感知节点设备通过互联网等网络连接起来构成的系统 物联网三个逻辑层 感知层 扩展指标来源于感知层特性 网络传输层和处理应用层 物联网定级要三层结合起来一起进行定级 感
  • C++错误之路:conversion from ...const_iterator ... to non-scalar type ... requested

    目录Contents 出错代码 bug原因分析 修改方法1 修改方法2 版权声明 出错代码 include