如何利用百度网盘搭建视频网站并集成Wordpress和微信openid?
摘要:用百度网盘做视频网站,Wordpress 微信 openid,wordpress采集站源码,公司网站建站要多少钱一年list 模拟实现回顾准备构造析构函数的构造构造方法析构方法赋值运算符重载容量相关接口元素获取元素修改相关接口push 、p
用百度网盘做视频网站,Wordpress 微信 openid,wordpress采集站源码,公司网站建站要多少钱一年list 模拟实现回顾准备构造析构函数的构造构造方法析构方法赋值运算符重载容量相关接口元素获取元素修改相关接口push 、popinserterase清空交换迭代器 **#xff08;重点#xff09;迭代器基本概念迭代器模拟实现回顾
在上一篇博客中我们大致了解了 list 相关接口的使用方法…
list 模拟实现回顾准备构造析构函数的构造构造方法析构方法赋值运算符重载容量相关接口元素获取元素修改相关接口push 、popinserterase清空交换迭代器 **重点迭代器基本概念迭代器模拟实现回顾
在上一篇博客中我们大致了解了 list 相关接口的使用方法并进行了一系列的测试练习那么这一小节就来模拟实现一些接口吧~
list 是一个带头双向循环的链表 在模拟实现这些接口之前我们需要先进行节点信息的创建 templateclass T //采用模板------可以定义不同数据类型的 list 链表struct ListNode {ListNode(const Tvalue T()) //构造方法:prev(nullptr), next(nullptr), val(value){}ListNode* prev; //前驱节点ListNode* next; //后继节点T val; //值域};准备
为了与类中 list 进行区分我们可以自定义一个命名空间在该命名空间内部来进行接口的模拟实现
namespace xx {templateclass Tstruct ListNode //创建节点信息{ListNode(const T value T()):prev(nullptr), next(nullptr), val(value){}ListNode* prev;ListNode* next;T val;};
}为了便于测试我们在自己的命名空间中定义一个打印信息的函数
templateclass Tvoid PrintList(const listT L){for (auto e : L)cout e ;cout endl;}定义链表信息
//定义链表信息templateclass Tclass List {typedef ListNodeT Node; //取别名public://构造方法//析构方法//接口模拟实现private:Node* _head; //头节点};构造析构函数的构造
构造方法
由于 list 链表是一个带头的双向循环链表并且已知 _head 头节点因此在创建链表时候要注意 prev 与 next 的指向
创建任何类型的构造方法之前我们首先要定义出一个带头结点的空链表 void CreateList(){//创建头节点_head new Node();_head-next _head-prev _head; //构造循环}1构造空链表
创建一个空链表也就是创建一个只有头节点的链表因此我们可以直接在构造方法内部调用头节点创建的函数即可
List() {CreateList();}2构造具有 n 个值为 val 的链表
构造一个具有 n 个相同节点的链表我们可以复用尾插或头插都可以来进行
List(int n, const T val T()){CreateList(); //首先创建头节点信息//构造 n 个值为 val 的节点我们可以采用 n 次尾插来进行for (int i 0; i n; i) {push_back(val);}}注意 3区间构造
templateclass IteratorList(Iterator first, Iterator last){CreateList(); //创建头节点auto it first;while (it ! last) {push_back(*it); //同样采用多次尾插方法来构造*it 代表获取节点值域it; //迭代器 it 的自增------表示获取下一个节点的位置}}
注意
在进行参数构造时候我们参数类型定义均为模板类型 Iterator 因此对于上述构造 n 个值相同的节点信息的链表倘若我们使用 size_t 类型来传入 n 参数会使得 编译器在进行类型推演时候默认为两个变量类型不一致导致编译器调用错误这也就解释了为什么将 n 变量类型定义为 int 的原因。
