欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于c++中与的容器(运算符的重载)实例讲解

程序员文章站 2022-03-26 19:46:53
关于c++中与的容器(运算符的重载)实例讲解 /* 运算符的重载 c++16次课 容器 stack queue vector容器的特征 =》 向量容器(底层是数组结构...

关于c++中与的容器(运算符的重载)实例讲解

/*
运算符的重载
c++16次课   容器    stack  queue

vector容器的特征  =》   向量容器(底层是数组结构)
1.默认构造的vector,底层没分配过内存 0
2.vector添加元素,满了以后,内存以2倍方式增长
*/
template
class vector
{
public:
	//默认构造的vector,底层没分配过内存0
	vector();
	//size表示初始的内存大小,val表示内存初始值
	vector(int size, const t &val = t());
	//拷贝构造
	vector(const vector &src);
	//operator=
	vector& operator=(const vector &src);
	~vector();

	//末尾添加元素
	void push_back(const t &val);
	//末尾删除
	void pop_back();

	t front()const;
	t back()const;

	//内存以2倍方式增长
	void resize();
private:
	t *mpvec;
	int msize;
	int mcur;
};

讲讲基础的迭代器

每周五的晚上都是精神高度紧张的晚上,c++这东西真的不太好学。也不知道学了有没有用。

在栈上构造了3个对象。

默认构造。

new分配内存---->构造对象

new默认会调用构造函数。

想要的是内存,不想要对象的产生构造容器时,只想要内存,不想要对象的产生,但new会默认调用一堆的没用对象。

第一次增长带来的无用对象。

开辟空间是重新开辟空间,不是在原来的上覆盖上。

从容器删除对象时,并没有真正的析构对象。

希望把内存开辟跟对象的构造分开(容器),new构造那么多无用对象。内存开辟,malloc只会开辟内存,不会构造对象?

如何在分配好的内存上构造对象。

new有4种方式。

int ?*p=new int;=>异常抛出bad_alloc

int *p=new (nothrow) int;不抛出异常bad_alloc

int *p

关于c++中与的容器(运算符的重载)实例讲解

delete会删除对象并析构会把内存空间也释放掉,不希望这样

对象析构~t();

容器最后会统一析构。

内存泄漏很严重的事情。

拷贝构造函数,

容器的空间配置器、迭代器。

空间配置器,把**分开。对象的构造、析构,内存开辟、释放

提供了默认的空间配置器。

关于c++中与的容器(运算符的重载)实例讲解

关于c++中与的容器(运算符的重载)实例讲解

内存开辟、释放,对象构造析构都交由空间配置器完成。避免无用对象的构造。