c++ day 15模板编程,可变参数,容器

template模板变量

在c++中,函数要接收参数的话就要先定义接收的参数的类型,而第一门语言是py的我始终觉得这很不通用,直到我学到了模板,

模板就是定义一个变量,这个变量代表的是如何一种类型,如 int string double 类型, 这样用在函数中当做变量的类型就很方便了,

template <typename T>
T add(T a, T b){

    return a+b;
};

这个T模板变量可以是任何一种数据类型, 不过在同一个函数的模板上, 这个模板变量只能是固定的一种类型,如果,前面 形参变量 a 接收的是int 的话 , 那么形参b也要是int类型, 如果形参b 想要使用到其他的类型的话可以在这个函数上再添加一个模板变量,用来定义这个类型, 如:

template <typename T, typename E>
T add(T a, E b){

    return a+b;
};

这时候就可以接收两个不同类型的变量了;

template 模板类

模板变量不仅可以定义在函数上, 也可以定义在类上, 如果定义在类上的时候, 创建类就要用<>给这个类的模板变量赋值类型的, 如:

template <typename ve, typename vs>
class  My_vet{
public:
    ve age = 10;
    vs name = "laowang"
}

可以看到使用模板变量可以替代类型定义变量, 这样会更通用

initializer_list

除了变量类型外, 接收参数的个数也很让我疑惑,在py 中可以有*args 来接收多个参数, 这个args 是一个元组类型,可以通过拆包来获取到里面的数据, 在c++中也有接收多个参数的方法的, 那就是 initializer_list ,这个形参是一个数组类型的变量, 可以通过传递参数的时候定义这个数组有多少个容量

template <typename T, typename E>
T add(initializer_list<int> li){
	   for (auto i = li.begin(); i < li.end(); ++i) {
        cout << *i << endl;
    }
    return a+b;
};

可以通过for 循环获取到数组中的数据

容器

容器就是有多个相同类型的数据放到一起,这个整体就是一个容器,容器的类型有 顺序容器 和 无序容器

顺序容器

所谓的顺序容器指的是,在容器的内部,元素的摆放是有顺序的。通常 vector已经足以满足大部分开发了。
顺序容器可以通过容器的指针的位运算来获取到下一个容器的数据
常见的顺序容器:
string 与vector相似,尾部插入|删除速度快
array 固定大小数组,支持快速随机访问,不能添加和删除
vector 可变大小数组,支持快速随机访问,在尾部之外的位置插入和删除 速度慢
deque | queue 双端(区分前后)队列, 支持快速随机访问,两端插入和删除速度快forward_list 单向链表、只支持单向顺序访问,插入和删除快,查询和更新慢
list 与单向链表不同,它是双向链表,其他一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值