• C++ 面试准备题


    C++ STL 里map 和 hash_map的异同

    答:

    C++ 11标准之中,定义了unordered_map,就是一种hash_map 。

    相同点:

    1. 二者的用法相同,有insert,size,count等操作。所有元素是以pair类型存储。

    不同点:

    1. 底层实现不同。map是基于rb_tree, hash_map是基于哈希表。

    2. hash_map的速度更快,查找速度为O(1)。map的查找速度是O(log(n))。插入数据的速度同样,hash_map的速度会快很多。

    3. hash_map相比于map会消耗更多的存储空间,所以需要控制内存空间的时候需慎重使用hash_map。

    list 和 vector 的区别

    1. vector为对象分配连续的空间,所以随机访问的效率很高。适合存储小容量内容。大容量数据的话,vector的开销成本太大。

    2. list 是离散存储的,在首尾插入元素,效率很高。

    适用对象:

    vector:对象数量变化少,随机访问元素频繁。

    list: 对象数量变化大,对象复杂,插入和删除频繁。

    C++ 占用的内存有哪些部分

    1. 栈: 编译器自动分配和释放。存放局部变量值等等。

    2. 堆: 程序员分配和释放,或者程序结束时候OS回收。

    3. 全局区(静态区):这二者在一起。程序结束之后释放。

    4. 文字常量区:常量字符串存放的地方。

    5. 程序代码区:存放程序代码。

    介绍下C++智能指针

    它是存储指向动态分配对象指针的类,用于生存期控制,能够自动正确的销毁动态分配的对象,防止内存泄露。他使用的方法是引用计数。每次创建智能指针类的对象时,计数置为1。对该对象赋值时,赋值操作符做操作时所指向的对象减掉1。右操作符指向对象计数+1。如果引用计数减为0,删除基础对象。

    C++的多态

    多态就是讲子类类型的指针赋值给父类类型的指针。

    虚函数

    虚函数通过一张虚函数表实现。当我们用父类指针操作子类时,用这张表来查找实际应该调用哪一个函数。

    指针和引用的区别

    引用不能为空,指针可为空,不过最好不要为空。

    引用定义时必须初始化,指针不必。

    引用不改变指向,指针会。

    引用更安全。

    动态绑定和静态绑定的区别

    静态绑定:对象是静态类型。出虚函数之外全都是静态绑定。

    动态绑定:对象是动态的类型。发生在运行期。只有虚函数可以使用。

  • 相关阅读:
    小组项目进度汇报
    小组项目进程展示
    结队项目
    小组计划
    个人项目:数独
    问题
    自我介绍
    结对项目
    软件工程基础大项目——数独问题
    关于软件工程的几个问题
  • 原文地址:https://www.cnblogs.com/chengxuyuanxiaowang/p/4497608.html
Copyright © 2020-2023  润新知