来自:碧波
16. const 可以修饰那些内容
变量、指针和引用、函数、类对象或类指针、函数返回值。
17. class 和 struct 的区别?有了class 为啥仍还保留 struct?
class 和 struct 用来定义 类 和 结构体,主要区别在于默认的访问权限不同(class 默认私有,struct 默认公有)
它们的区别主要体现在 成员默认的访问权限 和 继承方式 上:
在 class 中,默认的成员访问权限是 private,在 struct 中,默认的成员访问权限是 public
当没有显式指定继承方式时,class 默认是 private 继承,而 struct 默认是 public 继承。
虽然 class 和 struct 在语法上有一些细微差别,但其实它们提供了类似的功能。保留 struct 主要是为了提供语法上的灵活性和向后兼容性。
顺便吆喝一下,技术大厂,前后端测试捞人,近三周条件放宽,来看看!>>>机会
二、标准库
1. 什么是STL?
STL 是 C++ 标准模板库的缩写。它是 C++ 标准库的一部分,提供了一组通用的模板类和函数,实现了常用的数据结构和算法,以及一些函数对象和迭代器概念,使得 C++ 程序员可以更加高效地进行编程。
容器
如 vector(动态数组)、deque(双端队列)、list(双向链表)、set(集合)、map(映射)等,这些容器提供了高效的数据存储和访问方式,各自适用于不同的需求和使用场景。
算法
如排序、搜索、合并等,这些算法独立于任何特定的容器类型,可以利用这些算法直接对容器进行操作。
迭代器
提供了一种统一的方式来遍历容器中的元素。
函数对象
即重载了函数调用操作符 () 的对象。比如比较、排序等。
适配器
用于修改容器的接口或行为,使其能够满足特定的需求。
2. 数组和vector的区别? 大小:数组的大小在创建时是固定的,而vector的大小是动态可变的。
内存分配:数组的内存分配在栈上(静态数组)或堆上(动态数组),而vector的内存总是动态分配的,通常在堆上。
功能:vector提供了许多内置的操作,如动态扩展、插入和删除等,而数组只能直接访问元素,不支持动态调整大小。
性能:vector在需要扩展时可能会重新分配内存,而数组的内存分配则不会改变。
3. list 和 vector 的主要区别是什么? 存储方式: list 是一个双向链表,而 vector 是一个动态数组。
访问时间: list 不支持常数时间的随机访问,vector 支持常数时间的随机访问。
插入和删除: 在 list 中,在任意位置插入或删除元素。而在 vector 中,不太适合在中间插入或删除元素。
4. 在什么情况下使用 list 而不是 vector? 当你需要在容器的中间频繁插入和删除元素,而不是在末尾插入或删除时,list 更适合。
当你不需要随机访问元素,而是需要频繁进行插入和删除操作时,list 是更好的选择,因为它的这些操作在常数时间内完成。
5. set 的底层数据结构是什么? set 通常使用红黑树或其他自平衡的二叉搜索树实现。它确保所有元素是唯一的,并且保持排序状态,因此插入、删除和查找操作的时间复杂度是对数时间 (O(log n))。
|