错误1:

template<class T>
void temp(std::vector<T>& container)
{
        std::vector<T>::const_iterator p; //error: expected ‘;’ before ‘p’
        for(p = container.begin(); p != container.end(); ++p)
        {
                //...
        }
}

解决方法:

std::vector<T>::const_iterator p; //error: expected ‘;’ before ‘p’

typename std::vector<T>::const_iterator p;

原因:
 1、首先类除了可以定义数据成员或函数成员之外,还可以定义类型成员。
 2、使用std::vector<T>::const_iterator时,编译器假定这样的名字指定的是数据成员,而不是数据类型成员。
 3、如果希望编译器将const_iterator当做类型,则必须显示告诉编译器这样做,这就是我们加typename的原因。

错误2:typename const报错

template<typename T>
inline static bool Insert(std::list<T> & dest, const T & val)
{
    bool bDuplicate = false;
    typename std::list<T>::iterator iter = dest.begin();
    typename const std::list<T>::iterator end = dest.end();
    for ( ; end != iter; ++iter)
    {
        if(*iter >= val)
        {
            bDuplicate = (*iter == val);
            break;
        }
    }

if(!bDuplicate)
    {
        // 不重复则插入
        dest.insert(iter, val);
        return true;
    }

return false;
}

解决方法:

typename const std::list<T>::iterator end = dest.end();

const typename std::list<T>::iterator end = dest.end();

原因:

应该是typename后面接的下一个单词须是个类型名,而不应是const

更深入理解可以看nested dependent name(嵌套依赖名字)

本人以前的幼稚解决方法:

__gnu_cxx::__normal_iterator<T const*, std::vector<T, std::allocator<T> > > p;

c++ 模板参数做容器参数迭代器报错 vectorT::const_iterator,typename const报错相关推荐

  1. C++模板学习02(类模板)(类模板语法、类模板与函数模板的区别、类模板中的成员函数创建时机、类模板对象做函数参数、类模板与继承、类模板成员函数类外实现、类模板分文件编写、类模板与友元)

    C++引用详情(引用的基本语法,注意事项,做函数的参数以及引用的本质,常量引用) 函数高级C++(函数的默认参数,函数的占位参数,函数重载的基本语法以及注意事项) C++类和对象-封装(属性和行为作为 ...

  2. C++之模板类_容器_迭代器_算法_GCC_make

    站在编译器和C的角度剖析c++原理, 用代码说话 类模板基础 首先什么是模板: 模板就是把要处理的函数或类的类型参数化,表现为参数的多态性. 模板用来表现逻辑结构相同,但具体数据元素类型不同的对象的通 ...

  3. C++提高部分_C++类模板对象做函数参数---C++语言工作笔记090

    然后我们再去看C++的类模板也可以做函数的参数,而且参数方式 可以有3种方式,1.可以指定传入类型,2可以把参数变成模板进行传递, 3.将整个类进行模板化 我们去写个例子去看看 首先我们写一个Pers ...

  4. vector做函数参数和普通数组做函数参数有什么区别

    结论: 1,vector做函数参数,当vector参数做输出(vector数组需要在函数中被改变)的时候,需要传入vector的引用. 2,vector做函数参数,当vector参数做输入参数(只使用 ...

  5. ES6 | let 关键字 + const关键字 + 箭头函数 + rest参数 + 扩展运算符 ... + Symbol + 迭代器 + 生成器 + 变量的解构赋值 + 模板字符串

    目录 ECMASript 相关介绍 ECMASript 6 新特性 let 关键字 const关键字 变量的解构赋值 模板字符串 简化对象写法 箭头函数 => 参数默认值 rest参数 扩展运算 ...

  6. ES6(二)——字符串模板、标签模板字符串、函数的默认参数、剩余参数、数组对象的展开语法、数值的表示、Symbol

    一.字符串模板基本使用 在ES6之前,如果我们想要将字符串和一些动态的变量(标识符)拼接到一起,是非常麻烦和丑陋的(ugly). ES6允许我们使用字符串模板来嵌入JS的变量或者表达式来进行拼接: 首 ...

  7. Python基础day05【函数(函数传参的两种形式、函数形参)、拆包、引用、可变与不可变类型、引用做函数参数注意点】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员]    目录 0.复习 1.函数传参的两种形式[掌握] 2.函数形参 2.1.缺省参数(默认参数) ...

  8. c/c++教程 - 2.2 引用的使用方法,引用做函数参数,引用做返回值,引用的本质,常量引用

    2. 引用 学习目的:取代C中的指针. 目录 2. 引用 2.1 引用的基本使用方法 2.2 引用注意事项 2.3 引用做函数参数 2.4引用做函数返回值 2.5 引用的本质 2.6 常量引用 相关教 ...

  9. c/c++教程 - 1.10 结构体 使用typedef定义struct结构体 结构体数组 结构体指针 结构体嵌套 结构体做函数参数 结构体const

    十二.结构体 (1)结构体定义和使用 基本概念:结构体属于用户自定义的数据类型,允许用户存储不同的数据类型. 参考视频:https://www.bilibili.com/video/BV1et411b ...

最新文章

  1. 前端自动化构建工具webpack (二)之css和插件加载总结
  2. Corrigendum: A window into third generation sequencing
  3. 戴尔服务器设置文件存储,DELL服务器RAID配置详细教程-20210730001009.pdf-原创力文档...
  4. download first at netease music
  5. css修改select选择框option被选中的背景颜色_这五个有用的 CSS 属性完全被我忽视了...
  6. 【cocos2d-x从c++到js】14:注册函数
  7. 网页整个技术文档怎么拷贝_企业文档管理混乱?试试文档管理系统
  8. Microsoft JDBC Driver 4.0 for SQL Server
  9. 拓端tecdat|R语言通过伽玛与对数正态分布假设下的广义线性模型对大额索赔进行评估预测
  10. 汇编语言相关图书推荐
  11. 怎么把数组转化成字符串呢?有没有现成的函数呢?
  12. Altium Designer中PCB画多层板(4、6、8...层)
  13. ERP软件与需求漫延,如何解决?
  14. 单片机开发无线控制系列-单片机端代码实现
  15. 刚破了潘金莲的身份信息(图片文字识别),win7、win10实测可用(免费下载)
  16. 信号相参性(相干性)
  17. ArcGIS Enterprise托管服务/托管服务器/托管数据库-之“托管”理解
  18. 需求分析挑战之旅(疯狂的订餐系统)(4)——没完没了的“新需求”
  19. 数据看板/商业智能分析仪表盘
  20. 【小技巧】爆栈?栈的大小不够用怎么办?

热门文章

  1. navicate连接mysql问题(#1130 - Host 'localhost' is not allowed to connect to this MySQL server)
  2. 20岁黑客发现苹果核心 web 应用中的严重漏洞,获奖$3.6万
  3. 这个严重的无补丁 UPnP 漏洞影响几乎所有的IoT设备:绕过安全系统、扫描LANs
  4. Valak 6个月上演“变身戏法”,紧盯 Exchange 服务器窃取企业数据
  5. 惠普企业:自今年10月起,固件 bug 将导致某些 SSD 不可用
  6. 11月3日云栖精选夜读:《maven实战》读书笔记2——maven安装(windows和eclipse插件)...
  7. 浮动的三个特点很重要。
  8. SS不能在Win7中打开,出现停止运行
  9. 【完全开源】百度地图Web service API C#.NET版,带地图显示控件、导航控件、POI查找控件...
  10. Linux中运行c程序,与系统打交道