排序算法
[TOC] 各种算法的比较 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:1 快速排序 快速排序由东尼·霍尔在1960年提出。它的基本思想是“分治法”(Divide and Conquer)。 快速排序的平均时间复杂度为 $O(n \log_2 n)$,在最坏的情况下(例如,当输入数组已经是正序或逆序时)时间...
[TOC] 各种算法的比较 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:1 快速排序 快速排序由东尼·霍尔在1960年提出。它的基本思想是“分治法”(Divide and Conquer)。 快速排序的平均时间复杂度为 $O(n \log_2 n)$,在最坏的情况下(例如,当输入数组已经是正序或逆序时)时间...
mt与md格式的区别 mt mt的dll对于编程格式是更严格的,就比如说mt库是不允许类导出的(这里指的是纯类导出,而非纯虚类)。 此外,Windows系统中能同时加载的mt的dll个数也是有限制的,在Win10的某个系统前,是限制为仅能加载100多个,超出此限制后,若还有其他程序需要加载dll,就会提示加载失败,这也就是PKPM结构软件中1114问题的由来。 md md的dll则没有...
[TOC] 1 “Unicode字符集” 与 “多字节字符集” VS 集成开发环境,字符集可以选择 “使用多字节字符集” 和 “使用Unicode字符集” 两种,直接区别就是编译器会增加对应的宏定义。 使用 Unicode 字符集会增加宏定义:“_UNICODE” 和 “UNICODE”;使用多字节字符集会增加宏定义 “_MBCS”。见下面的截图。 使用 Unicode 字符集...
[TOC] 1 什么是智能指针 C++ 没有垃圾回收机制,需要程序员自己释放和分配内存,否则就会照成内存泄漏。 智能指针是指向动态对象的指针,当其应该被释放时,智能指针可以确保自动释放内存,不需要手动释放,避免内存泄漏问题,更加容易也更加安全地使用动态内存。 智能指针的本质是类模版,当智能指针所指向的对象使用完后,对象会自动调用析构函数去释放指针所指向的空间。 以下是智能指针基本框...
[TOC] 1. 动态指针 1.1 new 和 delete 在C++中创建动态指针1: // 定义指向动态分配的字符变量的指针 int* val0 = new int(6564); delete val0; val0 = nullptr; // 定义指向动态分配的一维字符数组的指针 // val1指向数组首个元素的地址,即(val1+1)为数组第二个元素的地址 int size...
[TOC] 1. 左值与右值 在C++中,左值(lvalue)和右值(rvalue)是表达式的两种基本类别,它们区分了表达式的不同属性,特别是它们的身份和存储期。 左值和右值的区别不仅仅是语法上的,它们也影响代码的语义,尤其是在涉及到重载操作符、移动语义和完美转发时。 C++11引入了右值引用(用&&表示),它允许开发者区分一个对象是可以安全地“移动”(即可以从中窃取...
此文档来自于企业微信共享文档,大部分是我写的,丛工和高工也有参与。 为了方便自己查阅,把这篇文档重新整理为 md 文档放在这里。 1. “使用标准Windows库”项目中使用CString报错: 项目属性页:配置属性 - 高级 - MFC的使用 - 使用标准Windows库。 包含头文件<atlstr.h>即可,需放在<windows.h>前: 2...
[TOC] 1. 基本概念 1.2 进程和线程 进程和线程都是操作系统中的基本概念,它们在多任务操作系统中用于程序的执行和系统资源管理。1 进程是资源分配的单位,线程是执行流的最小单位,它们是现代操作系统中实现并行和并发的基础。 进程(Process): 进程是操作系统进行资源分配和调度的基本单位。 它是一个程序的运行实例,拥有独立的地址空间...
[TOC] typeid 在 C++ 中,typeid是一个操作符,用于获取一个对象或类型表达式的类型信息。当对一个类型表达式使用typeid时,它返回一个std::type_info类的对象的引用。这个对象包含了有关表达式类型的信息,如类型的名称。typeid操作符是在头文件<typeinfo>中定义的。1 typeid的使用场景通常涉及到以下两种情况: ...
[TOC] 1. 函数模板 template <class T> void swap(T& a, T& b) { /*...*/ } template <class T>和template <typename T>效果一样。 函数模板,就是建立一个通用函数,其函数类型和形参类型不具体指定,只用一个虚拟的类型T来表示。 在调...