/*
运算符的重载
C++16次课 容器 stack queue
vector容器的特征 =》 向量容器(底层是数组结构)
1.默认构造的vector,底层没分配过内存 0
2.vector添加元素,满了以后,内存以2倍方式增长
*/
template<typename T>
class Vector
{
public:
//默认构造的vector,底层没分配过内存0
Vector();
//size表示初始的内存大小,val表示内存初始值
Vector(int size, const T &val = T());
//拷贝构造
Vector(const Vector<T> &src);
//operator=
Vector<T>& operator=(const Vector<T> &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();
容器最后会统一析构。
内存泄漏很严重的事情。
拷贝构造函数,
容器的空间配置器、迭代器。
空间配置器,把**分开。对象的构造、析构,内存开辟、释放
系统提供了默认的空间配置器。
内存开辟、释放,对象构造析构都交由空间配置器完成。避免无用对象的构造。