c++
文章平均质量分 78
s11show_163
这个作者很懒,什么都没留下…
展开
-
排序时间复杂度 & 快速排序 改进快排的方法
1、冒泡排序是一种用时间换空间的排序方法,n小时好2、最坏情况是把顺序的排列变成逆序,或者把逆序的数列变成顺序,最差时间复杂度O(N^2)只是表示其操作次数的数量级3、最好的情况是数据本来就有序,复杂度为O(n)1、n大时好,快速排序比较占用内存,内存随n的增大而增大,但却是效率高不稳定的排序算法。2、划分之后一边是一个,一边是n-1个,这种极端情况的时间复杂度就是O(N^2)3、最好的情况是每次都能均匀的划分序列,O(N*log2N)1、n大时好,归并比较占用内存,内存随n的...原创 2021-03-16 23:00:35 · 719 阅读 · 0 评论 -
剑offer - 5 -排序搜索
堆排序#include<iostream>using namespace std;void print(int arr[],int len){ for(int i=0;i<len;i++){ cout<<arr[i]<<" "; } cout<<endl;}void swap(int arr[],int i,int j){ int temp=arr[i]; arr[i] = arr[j]; arr[j] = temp;}原创 2020-06-29 15:56:55 · 132 阅读 · 0 评论 -
剑offer - 3 -链表
06.从尾到头打印链表利用vector的从头插入功能:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: vector<int> reversePrint(ListNode原创 2021-01-15 11:02:06 · 55 阅读 · 0 评论 -
std::forward完美转发(建议在std::move之后看)
参考https://blog.csdn.net/s11show_163/article/details/114296006一句话概括std::forward ———— 所谓的完美转发,是指std::forward会将输入的参数原封不动地传递到下一个函数中,这个“原封不动”指的是,如果输入的参数是左值,那么传递给下一个函数的参数的也是左值;如果输入的参数是右值,那么传递给下一个函数的参数的也是右值。一句话概括std::move ———— std::move是将对象的状态或者所有权从一个对象转移到另一.原创 2021-03-02 23:18:28 · 510 阅读 · 0 评论 -
std::move & 左值右值 &左值引用右值引用
一句话概括std::move ———— std::move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝。好了,下面系统的讲右值引用(及其支持的Move语意和完美转发)是C++0x加入的最重大语言特性之一。从实践角度讲,它能够完美解决C++中长久以来为人所诟病的****临时对象效率问题。从语言本身讲,它健全了C++中的引用类型在左值右值方面的缺陷。从库设计者的角度讲,它给库设计者又带来了一把利器。从库使用者的角度讲,不动一兵一卒便可以获得“免费的”效率提升。原创 2021-03-02 22:58:20 · 2173 阅读 · 1 评论 -
考过的题(面前必看)
c++介绍下std_moveC++介绍下右值引用c++异常处理java与c++的区别java:垃圾回收机制java: 抽象类与接口和c++中接口和虚函数的区别,java可以多继承吗?手写uniq_ptr编程:一个矩阵全是加号从左上角走到右上角有几种方式?编程:求字符串中回文字符串个数...原创 2021-03-01 00:04:03 · 130 阅读 · 0 评论 -
java: 抽象类与接口和c++中接口和虚函数的区别,java可以多继承吗?
转自https://blog.csdn.net/weixin_36571185/article/details/89523514一、对比图表JAVAC++普通函数虚函数,用Virtual标识抽象函数abstract纯虚函数,用Virtual标识 ,且函数=0抽象类抽象类,和java概念一样interface接口纯虚类,所有的函数都是纯虚函数。纯虚函数和虚函数的区别在于前者不包含定义,而后者包含函数体。二、C++虚函数与JAVA中抽象函数比较1:j.原创 2021-03-01 00:08:46 · 424 阅读 · 0 评论 -
java vs c++ 深入理解java垃圾回收机制
一、垃圾回收机制的意义Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。ps:内存泄露是指该内存空间使用完毕之后未回收,在不涉及复杂数据结构的一般情况下,Java 的内存泄露表现为一个内存对象的生命周期超出了程序需要它的时间长度,我们有时也将其称为“对象游原创 2021-01-29 22:54:34 · 360 阅读 · 0 评论 -
动态语言和静态语言的区别(如python与c++)
概念动态语言(弱类型语言)是运行时才确定数据类型的语言,变量在使用之前无需申明类型,通常变量的值是被赋值的那个值的类型。比如Php、Asp、JavaScript、Python、Perl等等。var s ="hello";var i = 0;var b = true;静态语言(强类型语言)是编译时变量的数据类型就可以确定的语言,大多数静态语言要求在使用变量之前必须生命数据类型。比如Java、C、C++、C#等。String s="hello"; //String 类型的变量boolean原创 2021-01-28 19:38:54 · 10376 阅读 · 2 评论 -
C++智能指针循环引用问题分析
C++11中引入了三种智能指针,分别是shared_ptr、weak_ptr和unique_ptr智能指针的作用 – 减少内存泄漏智能指针可以帮助我们管理动态分配的堆内存,减少内存泄漏的可能性手动管理堆内存有引起内存泄漏的可能,比如这段代码try { int* p = new int; // Do something delete p;} catch(...) { // Catch exception}如果在执行Do something的时候发生了异常,那么程原创 2021-01-28 18:35:23 · 644 阅读 · 0 评论 -
内存动态分配与释放,malloc和new区别
1. C语言的函数malloc和free(1) 函数malloc和free在头文件<stdlib.h>中的原型及参数 void * malloc(size_t size)动态配置内存,大小有size决定,返回值成功时为任意类型指针,失败时为NULL。 void free(void *ptr)释放动态申请的内存空间,调用free()后ptr所指向的内存空间被收回,如果ptr指向未知地方或者指向的空间已被收回,则会发生不可预知的错误,如果ptr为NULL,free不会有任原创 2021-01-24 23:47:58 · 278 阅读 · 0 评论