typename使用在模板中区分static成员和类型

简介: 16.19 编写函数,接受一个容器的引用,打印容器中的元素,使用容器的size_type和size成员来控制打印元素的循环。 16.20 重写上一题的函数,使用begin和end返回的迭代器来控制循环。

16.19 编写函数,接受一个容器的引用,打印容器中的元素,使用容器的size_type和size成员来控制打印元素的循环。

16.20 重写上一题的函数,使用begin和end返回的迭代器来控制循环。

#include<iostream>
#include<string>
#include<vector>
#include<list>
using namespace std;
template <typename T>
void print1(const T &v)
{
    auto iter=v.begin();
    for(typename T::size_type i=0;i!=v.size();++i)
        cout<<*iter++<<" ";
    cout<<endl;
}
template <typename T>
void print2(const T &v)
{
    auto iter=v.begin();
    while(iter!=v.end())
        cout<<*iter++<<" ";
    cout<<endl;
}
int main()
{
    vector<int> vec={1,2,3,4,5,6,7,8,9,0};
    list<int> lst={1,2,3,4,5,6,7,8,9,0};
    print1(vec);
    print2(lst);
    return 0;
}

 

相关文章
|
6月前
|
C++
C++ E0167 “const wchar_t *“ 类型的实参与 “BSTR“ 类型的形参不兼容
C++ E0167 “const wchar_t *“ 类型的实参与 “BSTR“ 类型的形参不兼容
68 0
|
1天前
|
Java 开发者
干货总结|快速构造String对象及访问其内部成员的技巧
本文详细解释了String类的底层实现,介绍了构造String对象及其访问其内部成员的技巧。
|
1月前
|
NoSQL C++
c++中包含string成员的结构体拷贝导致的double free问题
c++中包含string成员的结构体拷贝导致的double free问题
9 0
|
2月前
|
存储 缓存 安全
【C/C++ 关键字 存储类说明符】C/C++ 的mutable 关键字 忽略对该数据成员的常量性检查在const函数中修改变量值
【C/C++ 关键字 存储类说明符】C/C++ 的mutable 关键字 忽略对该数据成员的常量性检查在const函数中修改变量值
29 0
|
2月前
|
存储 C语言 C++
C/C++静态static属性/用法
C/C++静态static属性/用法
10 0
|
2月前
|
存储 程序员 C++
在C++语言中string-vector的字符串作用类型
在C++语言中string-vector的字符串作用类型
11 0
|
3月前
|
编译器 C语言 C++
【C++基础】 --- C++相对于C新增bool类型变量
【C++基础】 --- C++相对于C新增bool类型变量
20 1
|
10月前
|
存储 安全 算法
02-📝C++核心语法|C++对C的扩展【::作用域运算符、名字控制、struct类型加强、C/C++中的const、引用(reference)、函数】
复习`C++核心语法`,且适当进行汇编探索底层实现原理,进一步夯实基础,为以后的`底层开发`、`音视频开发`、`跨平台开发`、`算法`等方向的进一步学习埋下伏笔。
02-📝C++核心语法|C++对C的扩展【::作用域运算符、名字控制、struct类型加强、C/C++中的const、引用(reference)、函数】
记录几个经常用到的泛型方法定义模板
记录几个经常用到的泛型方法定义模板
53 0
|
C语言 C++
void 类型不能用来初始化char* 类型的实体
void 类型不能用来初始化char* 类型的实体
361 0
void 类型不能用来初始化char* 类型的实体

热门文章

最新文章