排序
面试题:请介绍下std::sort的原理?底层是快速排序吗?
std::sort 是 C++ 标准库中用于对容器(如 std::vector、std::array 等)或范围进行排序的算法。它的实现原理和底层排序算法并不是固定的快速排序,而是一种混合排序算法,结合...
面试题:C++ 的 strcpy 和 memcpy 有什么区别?
在C++中,strcpy 和 memcpy 是两个常用的函数,用于复制数据。尽管它们的功能相似,但在使用场景和行为上有显著的区别。 1. strcpy 定义:strcpy 是用于复制字符串的函数...
面试题:C++ 中 static 的作用?什么场景下用到 static?
在 C++ 中,static 是一个关键字,具有多种用途,具体作用取决于它的使用场景。以下是 static 的主要作用和使用场景: 1. 静态局部变量 作用:在函数内部定义的静态局部变...
面试题:C++ 中 shared_from_this 的作用是什么?它有什么优点?
shared_from_this 是 C++ 标准库中的一个工具,用于在类的成员函数中安全地获取一个指向当前对象的 std::shared_ptr。它通常与 std::enable_shared_from_this 一起使用。 ...
面试题:平时开发 C++ 程序处理错误是使用 try-catch 还是错误码方式?
在 C++ 开发中,处理错误的方式主要有两种:异常处理(try-catch) 和 错误码(Error Code)。选择哪种方式取决于具体的应用场景和需求。以下是两种方式的对比以及适用场景: 1. ...
面试题:什么是 C++ 的函数重载?它的优点是什么?和重写有什么区别?
在 C++ 中,函数重载(Function Overloading)是一种允许在同一作用域内定义多个同名函数,但这些函数的参数列表必须不同的特性。通过函数重载,可以使用相同的函数名来实现不同的功能,从而提...
面试题:C++ 的有栈协程和无栈协程有什么区别?
在 C++ 中,协程(Coroutine)是一种轻量级的并发编程工具,可以分为有栈协程(Stackful Coroutine)和无栈协程(Stackless Coroutine)。它们的主要区别在于栈的管理方式和实现机制。 1. 有栈...
面试题:C++ 中 extern 有什么作用?extern “C” 有什么作用?
在 C++ 中,extern 是一个关键字,用于声明变量或函数的外部链接性。 它的主要作用是告诉编译器某个变量或函数是在其他地方定义的,而不是在当前文件中定义的。 extern 'C' 则是用于解决 C++ 与...
面试题:C++ 什么场景下用继承?什么场景下使用组合?
在C++中,继承和组合是两种不同的代码复用方式,适用于不同的场景。 1. 继承的使用场景 继承用于表示“is-a”关系,即子类是父类的一种特殊类型。继承适合以下场景: 代码复用:当多个类有共同...
面试题:C++ new操作的背后都经历了什么?
在C++中,new操作符用于动态分配内存并构造对象。它的背后经历了一系列步骤,包括内存分配、对象构造以及可能的异常处理。以下是new操作的详细过程: 1. 内存分配 new操作符首先调用operator ne...