Typename in C++ Template

原创 2011年01月07日 17:40:00

今天调一个程序,里面用到了vector,在GDB里面看vector里面的东西一点也不直接,如果碰到vector<vector<int> >,要想看看里面的内容就更不爽了。也可能是我不知道有什么好办法,如果谁知道,麻烦告诉我一下。

没有办法,只要弄个Dump函数来看:

template <class T>
void DumpArrayArray(vector<vector<T> >& arr)
{
    cout<< "Dumping Data:" << endl;
    vector< vector<T> >::iterator outIter = arr.begin();
     for (; outIter!= arr.end(); outIter++)
     {

         vector<T>::iterator inIter = (*outIter).begin();
         for (;inIter!=(*outIter).end();inIter++){
             cout << *inIter << "t";
         }
         cout << endl;
     }
}

猜猜GCC报什么错来着,其实我估计Visual Studio也会报一样的错,编译错哦:

clsAggregateGroups.cpp:In function ‘void DumpArrayArray(std::vector<std::vector<T, std::allocator<_CharT> >, std::allocator<std::vector<T, std::allocator<_CharT> > > >&)’:

clsAggregateGroups.cpp:38: error: expected `;’ before ‘outIter’

见鬼,我明明定义了vector<vector<T> >::iterator outIter的啊,后来我让开林帮我看看,他一离开座位,我就想起来了,这是typename的问题。当我们使用类型推导的时候 vector<vector<T> >::iterator , C++编译器没有办法肯定这个iterator是类型呢,还是变量?所以需要程序员明确的告诉编译器,以前我看STL源码解析的时候看到过的。

所以我应该改成:typename vector<vector<T> >::iterator outIter; 这样编译就过了。

C++ - 模板(template)中typename的使用方法

模板(template)中typename的使用方法 http://blog.csdn.net/caroline_wendy/article/details/23910709 声明templ...
  • u012515223
  • u012515223
  • 2014年04月17日 10:31
  • 10025

C++基础——关于模板的技巧性基础知识(typename、成员模板、模板的模板参数)

关键字typename的另一种用法 将成员函数和嵌套类也定义成模板 模板的模板参数(template template parameters)...
  • lanchunhui
  • lanchunhui
  • 2015年11月05日 10:41
  • 1214

模板(template)中typename的使用方法

声明template参数时, 前缀关键字class和typename可以互换; 使用关键字typename标识嵌套从属类型名称, 但不需在基类列表和成员初始化列表内使用. 从属名称(depen...
  • darennet
  • darennet
  • 2014年11月09日 16:10
  • 18257

C++中 模板Template的使用 (typename)

1、在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢? 答:class用于定义类,在模板引入c++后,最初定义模板的...
  • u012138828
  • u012138828
  • 2014年08月10日 15:39
  • 274

C++中template<class T> && template <typename T>(模板区分)

问题:在下面的 template declarations(模板声明)中 class 和 typename 有什么不同?  template class Widget; // use...
  • wisdom605768292
  • wisdom605768292
  • 2013年08月10日 17:35
  • 2051

How to get a type in C++ when its template argument is the argument

First, we can't do : //It's wrong. template U TypeFunc (U p); template U TypeFunc2();//either i...
  • pochioly
  • pochioly
  • 2011年08月21日 17:30
  • 722

C/C++学习笔记(2)--函数模板template<typename T>,类模板详解(1)

(一)函数模板的概念 1--假设要编写一个函数对两个参数求和。实际编程中,我们可能希望定义几个这样的函数,每一个都可以对一种 给定类型的值求和,那么,可能自然会想到使用重载函数.例如: ...
  • maweifei
  • maweifei
  • 2016年04月23日 11:48
  • 1544

template关键字typename和class的区别,以及模板默认参数

template关键字typename和class的区别问题:在下面的 template declarations(模板声明)中 class 和 typename 有什么不同?template cla...
  • anye3000
  • anye3000
  • 2011年06月29日 12:00
  • 4356

Why C++ Supports typename and class.txt

  • 2010年12月17日 14:57
  • 6KB
  • 下载

(转)C++箴言:理解typename的两个含义

2005-12-05 09:14作者:fatalerror99出处:BLOG责任编辑:方舟 问题:在下面的 template declarations(模板声明)中 class 和 typename...
  • gxj1680
  • gxj1680
  • 2011年04月21日 17:16
  • 525
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Typename in C++ Template
举报原因:
原因补充:

(最多只允许输入30个字)