vector类不同于string类.他其中的成员变量都为重定义自定义类型指针为迭代器,用指针的位置来代表容量,当前容器大小
构造函数:将所有指针都置为空,析构函数:释放空间并将所有成员指针置为空.
拷贝构造和重载=运算符:拷贝构造可以开空间并依次尾插被拷贝类的各个数值来达到构造的目的,而自定义运算符可以根据函数传参自动调用拷贝构造的特性来完成赋值的目的.手动实现swap为了提高效率.
一些特别的点:
1.迭代器失效问题:在迭代过程中若是出现容器扩容,则可能会出现迭代器指针失效导致程序崩溃.
或者迭代过程中删除元素导致vs环境下检测报错.可以用上述图片中用到的方法解决,就是erase函数会返回删除位置下一位的指针,我们可以用迭代器接受这个值来解决.
2.c++11的范围for是依靠容器的迭代器来工作的,若是begin函数或者end函数出现问题则迭代器也会出现问题
3.mem系列库函数是按字节处理数据的,所以在用mem系列函数处理类之间的问题时要慎重考虑.
4.c++中可以用double j=double(7.8)来初始化内置类型.因为需要考虑到兼容模版
5.析构函数一定要尽早些不然出现内存泄漏可能不会被发现,或者当工程写到一定程度时写了析构函数报错会很麻烦,因为不知道那里内存泄漏了.
最后加深记忆:在函数传参的时候一定要考虑传引用!!!
标签:函数,迭代,实现,学习,vector,析构,拷贝,指针 From: https://www.cnblogs.com/qjwxlj/p/17298979.html