使用智能指针创建单链表
前言
本章主要讲述如何使用智能指针及其分类,以及自己实现的单链表
一、什么是智能指针?
智能指针(smart pointer)的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象的指针指向同一对象。
二、智能指针的分类及使用
在c++11中引入了shared_ptr、unique_ptr和weak_ptr;在此之前有也有一个智能指针叫做auto_ptr,在后来的新标准发布后不再使用
1.shared_ptr
是一种共享指针,主要用于类之间的数据交换,内含有一个计数器,当计数器为0时,指针自动释放。
例如:
shared_ptr<int> p1=make_shared<int>(10);//p1的计数器加1
shared_ptr<int> p2=make_shared<int>(11);//p2的计数器加1
p1=p2;//p2的计数器加1,p1计数器减一,此时p1得到计数器为0,指针指向的内容被释放
2.unique_ptr
独占数据的一个指针,指针销毁,数据销毁,只能使用直接赋值,不被被拷贝,拷贝构造和拷贝赋值操作符被删除
unique_ptr<int> p1=make_unique<int>(10);
unique_ptr<int> p2(new int(10));
unique_ptr<int> p3;
3.weak_ptr
弱共享指针,使用不会影响shared_ptr的计数器,不经常使用
三、单链表实现
List.h:
#pragma once
#include <iostream>
#include <memory>
us