摘要:
#include <iostream.h>class animal{ public: void sleep() { cout<<"animal sleep"<<endl; }void breathe(){ cout<<"animal breathe"<<endl;}};class fish:publ 阅读全文
摘要:
一、vector、list 正确版本: for(auto iter = a.begin(); iter != a.end(); ) { if(*iter > 30) { iter = a.erase(iter); } else { iter++; } } 错误版本: for(auto iter = 阅读全文
摘要:
i++ 与 ++i 的主要区别有两个: 1、 i++ 返回原来的值,++i 返回加1后的值。 2、 i++ 不能作为左值,而++i 可以。 // 前缀形式: int& int::operator++() //这里返回的是一个引用形式,就是说函数返回值也可以作为一个左值使用 {//函数本身无参,意味着 阅读全文
摘要:
不同容器内部数据结构不一样,插入、删除容器中的元素的操作可能导致内部数据结构内存布局的改变,那么就可能引起迭代器失效。 一、vector 删除操作:erase/pop_back,在vector中删除元素,删除位置之后的元素都依次复制到前一个位置,所以删除位置之后的迭代器失效 插入操作:push_ba 阅读全文
摘要:
void clear():删除存储在vector中的所有元素 一、 1.如果vector的元素是一些object,则它将为当前存储的每个元素调用它们各自的析构函数。 2.如果vector存储的是指向对象的指针,此函数并不会调用到对应的析构函数。会造成内存泄漏。想要删除vector中的元素则应遍历ve 阅读全文
摘要:
一、vector的内存增长 vector内存的特点:内存空间只会增长,不会减少 vector支持随机访问,vector容器的元素以连续的方式存放,每个元素都紧挨着前一个元素存储。当vector插入数据时,可能空间不够,这时要重新分配新的内存,将数据从旧空间拷贝到新空间,然后释放旧空间,这样性能难以接 阅读全文