-
C++标准库vector实现原理及扩容复杂度:
std::vector是一个动态数组容器,它内部维护着一块连续内存空间以及当前元素数量。
扩容机制:当向vector添加元素导致容量不足时,vector会自动重新分配更大的内存空间,并将原有数据拷贝到新内存区域,新分配的空间通常是原容量的1.5倍或更大(具体策略与编译器实现有关)。
push_back复杂度分析:如果不需要扩容,时间复杂度为O(1);若需要扩容,则涉及到数据复制,平均情况下是O(n),最坏情况下(每次插入都导致扩容)是O(n),n表示现有元素数量。 -
C++进程间通信(IPC)的方式: C++本身不直接提供进程间通信API,但可以通过操作系统提供的接口实现IPC,常见的方法包括:
管道(Pipe):用于父进程和子进程之间传递数据。
有名管道(FIFO或命名管道):可用于任意两个进程间的通信。
消息队列(Message Queues):进程间通过发送和接收消息来通信。
共享内存(Shared Memory):不同进程可以直接访问同一块内存区域交换数据。
套接字(Sockets):网络编程中最常用的通信方式,但也适用于本地进程间通信。
信号量(Semaphores)和互斥量(Mutexes):主要用于进程间同步而非数据传输。 -
构造函数和析构函数是否可以声明为虚函