关于c++中与的容器(运算符的重载)实例讲解
程序员文章站
2022-07-01 18:26:14
关于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
delete会删除对象并析构会把内存空间也释放掉,不希望这样
对象析构~t();
容器最后会统一析构。
内存泄漏很严重的事情。
拷贝构造函数,
容器的空间配置器、迭代器。
空间配置器,把**分开。对象的构造、析构,内存开辟、释放
提供了默认的空间配置器。
内存开辟、释放,对象构造析构都交由空间配置器完成。避免无用对象的构造。
上一篇: 微信小程序组件的拆分及其传值