![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 62
transformer_WSZ
You Only Look Once!
展开
-
C++智能指针详解
在日常使用中,unique_ptr使用频率最高,weak_ptr最低,需要避免循环引用的情况。当然,还是要根据具体的业务场景和性能要求来选择哪种指针。原创 2022-09-13 01:19:37 · 978 阅读 · 0 评论 -
STL学习
vectorvector 是一个自动扩容的容器,支持随机访问,底层通过动态数组实现。扩容当 vector 执行 insert 或者 push_back 时,如果当容器的存储数量已经达到容量,就会触发扩容。具体流程如下:申请新的内存空间(原内存空间的1.5~2倍)把原空间的元素拷贝到新的空间里释放原空间数组指针指向新空间成员函数size() : 容器中元素的个数capacity() : 器在分配那块内存上可以容纳的元素的个数resize(n) : 强制将容器改为容纳为 n 个数据,原创 2021-08-26 01:09:03 · 129 阅读 · 0 评论 -
C++常见面试题
记录一下C++常见的面试八股文。C++内存分配有哪几种方式?从静态存储区分配:内存在程序编译的时候已经分配好,这块内存在整个程序的运行期间都存在,例如全局变量、静态变量。在栈上创建:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存有限。在堆上分配:程序在运行的时候用malloc或new申请任意多的内存,由程序员手动free或delete来释放内存。动态内存的生存期有开发者自己决定,使用非常灵活原创 2021-06-25 01:31:33 · 99 阅读 · 0 评论 -
C++学习笔记之多态
多态性:相同对象收到不同消息或不同对象收到相同消息时产生不用的实现动作。多态有两种类型:编译时多态性(静态多态):通过重载函数实现。运行时多态性(动态多态):通过虚函数实现。多态与非多态实质区别就是函数地址是早绑定还是晚绑定。如果函数的调用,在编译期间就可以确定函数的调用地址,并生产代码,是静态的,就是说地址是早绑定的。如果函数调用的地址不能在编译期间确定,需要在运行时才确定,这就属于晚绑定。多态的目的封装:代码模块化。继承:可以扩展已存在的代码。两者目的都是为了代码重用。.原创 2021-06-01 00:06:42 · 209 阅读 · 0 评论 -
二分查找
对于有序数组而言,二分查找效率是最高的。# include <iostream>using namespace std;//递归void RecursiveBinarySearch(int arr[],int low,int high,int target){ int mid = (low + high)/2; if(low > high){ cout << "查找原创 2017-06-09 12:26:13 · 324 阅读 · 0 评论 -
归并排序
归并排序采用递归和分治的思想。分治主要是将两个无序数组合并成一个有序数组。# include <iostream>using namespace std;void MergeTwo(int sourceArr[],int tempArr[],int startIndex,int midIndex,int endIndex){//0,4,9 int i = startIndex; in原创 2017-06-07 13:54:45 · 259 阅读 · 0 评论 -
快排
快排的大致思想是:以一个数为枢轴,比它大的放到右边,比它小的放到左边。# include <iostream>using namespace std;void QuickSort(int arr[],int low,int high){ if(low >= high)//此时只有一个数,不需要排序 return; int first = low; int las原创 2017-06-07 13:47:00 · 677 阅读 · 0 评论