标题重新写&&大佬的博客

https://www.androidperformance.com/2018/05/07/Android-performance-optimization-skills-and-tools/

全部先参考此链接:https://www.cnblogs.com/inception6-lxc/p/8686156.html 

  1.vector : 因为vector使用数组实现的,因此元素是保存在连续的内存中的,所以通过索引取值的速度非常快

   

  size的大小:结束的数据-开始的数据

  capacity的大小:申请一块连续的内存大小

  2.resize()、reserve()两个函数对比

   resize : 影响的存储的数据的大小,也有可能影响capacity这个大小,因为size长度比capacity的长度大,这个时候就需要扩容

   reserve:它只影响capacity的大小,不会影响size的大小

   扩容时候会把之前旧数据拷贝到新的数据里面,然后再把老的数据清除掉

  3. list : 在底层使用一个双向的环形链表实现的,所以在任意位置进行增加或者删除速度都比较快,都是指针交换

    4.Map、Multimap、Unordered_map、Unordered_multimap

    Map和Multimap:底层基于红黑树,元素自动有序,且插入、删除效率高,时间复杂度是O(logN)

    Unordered_map和Unordered_multimap : 底层基于哈希表,故元素无序,查找效率高,时间复杂度是O(1)

  5.迭代器和指针的区别

   迭代器:有个迭代器模式,对指针里面的功能进行一系列封装的指针,它是一个类模版。迭代器的类型有:

    指针:它是一个存放对象的地址的指针变量。

  6.类模版 :template作为关键字

   

  7.友元函数,需要用friend来作为定义

   类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。

  8.指针和引用的区别

   引用被创建的同时必须被初始化                                            指针则可以在任何时候被初始化

   不能有NULL 引用,引用必须与合法的存储单元关联                 指针则可以是NULL

   一旦引用被初始化,就不能改变引用的关系                             指针则可以随时改变所指的对象

   引用有编译检查                                                                 指针无编译检查  

  9.虚函数用sizeof来看大小

         虚函数用sizeof大小是4,虚函数指针的大小是4,指针用sizeof去计算大小都是4

  10.虚函数和纯虚函的区别

         虚函数:它是一个继承,子类不一定需要实现,继承只能实现一个
         纯虚函数:它是一个接口,子类必须实现,它是在方法后面加个=0,接口可以实现多实现

         什么情况下需要将析构函数定义为虚函数?
         当一个类里面有虚函数时候,继承之后就会调用该方法,这样会导致内存泄漏,才必须再析构函数加virtual这个关键字

 

 

    

原文地址:https://www.cnblogs.com/liunx1109/p/14120441.html