【Qt】《Qt 5.9 C++开发指南》笔记-Chapter1-认识Qt

第1章 认识Qt

1.1 Qt简介

C++是一种通用的标准编程语言,使用任何编辑器都可以编写C++源程序,然后利用C++编译器对程序进行编译,就可以生成可执行的程序。

为了方便进行C++程序的编写和编译,有各种综合开发环境(Integrated Developing Environment,IDE),如Visual Studio就是Windows平台上常见的编写C++程序的IDE。一个IDE不仅提供程序的编辑和编译,一般还提供一套基本类库,用于提供支持平台应用程序开发的各种基本类,如Visual Studio使用MFC进行Windows平台的应用程序开发。

Qt是一套应用程序开发类库,但与MFC不同,Qt是跨平台的开发类库。Qt支持PC和服务器的平台,包括Windows、Linux、macOS等,还支持移动和嵌入式操作系统,如iOS、Embedded Linux、Android、WinRT等。跨平台意味着只需编写一次程序,在不同平台上无需改动或只需少许改动后再编译,就可以形成在不同平台上运行的版本。这种跨平台功能为开发者提供了极大的便利。

Qt最早是由挪威的Haavard Nord和Eirik Chambe-Eng在1991年开始开发的,在1994年发布,并成立了一家名为Trolltech的公司。Trolltech公司在2008年被诺基亚公司收购。2012年,Qt被Digia公司收购,并在2014年成立了独立的Qt公司,专门进行Qt的开发、维护和商业推广。

经过20多年的发展,Qt已经成为最优秀的跨平台开发框架之一,在各行各业的项目开发中得到广泛应用。许多大型软件都是用Qt开发的,如Autodesk Maya、Google Earth、Skype、WPS Office等。

C++语言使用广泛,长盛不衰,易在不同平台上移植,其编译生成的程序执行效率高,所以在专业研究领域很多开源的算法程序或类库都是用C++编写的。使用Qt C++编写应用程序,可以使自己的应用程序具有跨平台移植的功能,也可以利用各种开源的类库资源。所以,扎实地掌握Qt C++编程就如同掌握了一件利器,无论是通过编程实现自己的专业研究成果,还是从事专业软件开发都具有长远意义。

1.2 Qt的获取与安装

1.2.1 Qt的许可类型

Qt的许可类型分为商业许可和开源许可,开源许可又分为LGPLV3和GPLV2/GPLV3。商业许可允许开发者不公开项目的源代码,其Qt版本包含更多的模块(某些模块只有商业许可的版本里才有),并能获得Qt公司的技术支持。当然,购买Qt商业许可需要支付费用。

使用开源许可的Qt无需支付费用,但是要遵循开源许可协议LGPLV3或GPLV2/GPLV3的规定。关于商业许可、开源许可的具体差别,开源许可的要求可以查看Qt官网的相关介绍。

对于Qt的学习来说,初学Qt使用开源版本的软件即可。若需要开发大型软件,并且不希望按照开源许可协议的要求公开源代码,以便对编写软件进行版权保护,则可以购买Qt的商业许可。

不同许可协议下,Qt的使用权利和要求、包含的模块、工具的对比可查看Qt官网网址。

1.2.2 Qt的版本

Qt的版本更新比较快,且版本更新时会新增一些类或停止维护一些以前版本的类,例如Qt 5与Qt 4就有较大的区别,如果不是为了维护用旧版本编写的程序,一定要选用最新版本的Qt进行程序开发。

Qt公司在2017年5月底发布了Qt 5.9.0。Qt 5.9是一个长期支持(long term supported,LTS)版本,在未来至少3年内提供更新支持,而上一个LTS版本是Qt 5.6 LTS。

Qt 5.9具有更强的性能,更好的稳定性,从Qt 5.6到Qt 5.9增加了许多新的特性,一些重要的更新如下。

  • Qt 5.7增加了Qt 3D、Qt Quick Controls 两个模块。

  • 从Qt 5.7开始,Qt Charts、Qt Data Visualization、Qt Virtual Keyboard、Qt Purchasing、Qt Quick 2D Renderer等原来只在商业许可版本中存在的模块在开源许可版本中也可以使用了。

  • Qt 5.8增加了Qt Wayland Compositor、Qt SCXML和Qt Serial Bus 3个模块。

  • Qt 5.9增加了Qt Gamepad模块,用于不同平台上对游戏手柄的支持。

  • Qt 5.9包含一些技术预览模块,包括Qt Remote Objects、Qt Network Authentication和Qt Speech。

  • Qt 5.9的QtCore模块增加了qfloat16数据类型定义。

可访问Qt官网页面了解Qt 5.0至Qt 5.9版本更新的历程和每个版本的新增特性描述。

由于Qt 5.9 LTS是一个长期技术支持版本,在未来几年里都将有更新支持,因此,本书以Qt 5.9 LTS版本为例进行讲解,并且所有实例程序均使用Qt 5.9编译测试通过。

1.2.3 Qt的下载与安装

从Qt官网可以下载最新版本的Qt软件。根据开发项目的不同,Qt分为桌面和移动设备应用开发、嵌入式设备开发两大类不同的安装包。

桌面和移动设备应用开发就是开发在PC、服务器、手机、平板电脑等设备上运行的程序,操作系统平台可以是Windows、Linux、macOS、Android等。用于桌面和移动设备应用开发的Qt具有开源许可协议,可以免费下载和使用。

嵌入式设备开发是针对具体的嵌入式设备来开发应用程序,如物联网设备、汽车电子设备、医疗设备等特定的嵌入式设备。用于嵌入式设备开发的Qt可下载30天试用版本。

本书是介绍桌面应用程序开发的,所以下载使用的是桌面和移动设备开发的Qt 5.9.1开源版本。根据Qt官网的提示,注册用户后才可以下载Qt安装程序。

Qt 5.9.1的安装包分为在线安装包和离线安装包,为便于重复安装,最好下载离线安装包。离线安装包根据使用的操作系统平台不同,分为Linux、macOS和Windows 3个版本,本书实例都是用Windows 7平台上的Qt开发的,所以这里下载Windows版本的Qt 5.9.1离线安装包。

Qt 5.9以前版本的离线安装包即使是在Windows平台上,也会根据使用的编译器不同分为很多版本,如MinGW 32-bit版本、MSVC2015 32-bit版本、MSVC2015 64-bit版本等。而Qt 5.9在一个平台上只有一个安装包,编译器的选择放在了安装过程里,所以下载的Windows平台上的Qt 5.9.1安装包只有一个可执行文件。

双击下载后的Qt 5.9.1离线安装包可执行文件,就开始执行安装过程,安装过程与一般的Windows应用程序一样,按照向导进行操作即可。

在安装过程中会出现如原书的图1-1所示的安装选项设置页面,在这个页面里选择需要安装的模块。"Qt 5.9.1"节点下面是Qt的功能模块,包括用于不同编译器和平台的模块,这些模块包括内容如下。

  • MinGW 5.3.0 32 bit编译器模块。MinGW是Minimalist GNU for Windows的缩写,MinGW是Windows平台上使用的GNU工具集导入库的集合。

  • 用于UWP编译的模块。UWP是Windows 10中Universal Windows Platform的简称,有不同编译器类型的UWP。

  • 用于windows平台上的MSVC编译器模块,如msvc2015 32-bit和msvc2015 64-bit等。要安装MSVC编译器的模块,需要计算机上已经安装相应版本的Visual Studio。

  • 用于Android平台的模块,如Android x86和Android ARMv7。

  • Sources是Qt的源程序。

  • Qt Charts是二维图表模块,用于绘制柱状图、饼图、曲线图等常用二维图表。

  • Qt Data Visualization 是三维数据图表模块,用于数据的三维显示,如散点的三维空间分布、三维曲面等。

  • Qt Purchasing、Qt WebEngine、Qt Network Auth(TP)等其他模块,括号里的TP表示技术预览(Technology Preview)。

  • Qt Scritp(Deprecated)是脚本模块,括号里的"Deprecated"表示这是个已经过时的模块。

"Tools"节点下面是一些工具软件,包括内容如下。

  • Qt Creator 4.3.1是用于Qt程序开发的IDE。

  • MinGW 5.3.0是MinGW 编译工具链。

  • Strawberry Perl是一个Perl语言工具。

根据个人的需要设置安装选项,无需选择所有的安装选项。例如,如果不需要进行UWP平台的开发,UWP模块就可以都不选;如果不是为和以前开发的源程序兼容,过时的模块不要选择,如Qt Script就是已过时的模块。

注意:如果选择安装MSVC编译器的模块,需要在计算机上安装相应的Microsoft Visual Studio开发工具,使用免费的Community版本的Visual Studio即可。

安装完成后,在Windows"开始"菜单里建立的Qt 5.9.1程序组内容如原书的图1-2所示。程序组中一个主要的程序是Qt Creator 4.3.1(Community),它是用于开发Qt程序的IDE,是Qt的主要工具软件。

根据选择安装的编译器模块会建立几个子分组,见原书的图1-2中的MinGW 5.3.0 (32-bit)、MSVC 2015(32-bit)和MSVC 2015(64-bit),每个分组下面主要有3个工具软件。

  • Assistant是一个独立的查看Qt帮助文件的程序,集成在了Qt Creator中。

  • Designer是一个独立的进行窗口、对话框等界面可视化设计的程序。Designer也集成在了Qt Creator中,在Qt Creator中编辑或创建界面文件时,就可以自动打开并进行界面设计。

  • Linguist是一个编辑语言资源文件的程序,在开发多语言界面的应用程序时会用到。

这3个工具软件可独立使用,前两个集成到了Qt Creator里,可在Qt Creator打开。所以Qt的主要工具是Qt Creator,要编写Qt程序,运行Qt Creator即可。

1.3 Qt Creator初步使用

1.3.1 Qt Creator的界面组成

启动Qt Creator,出现如原书的图1-3所示的主窗口。

Qt Creator的界面很简洁。上方是主菜单栏,左侧是主工具栏,窗口的中间部分是工作区。根据设计内容不同,工作区会显示不同的内容。

图1-3是在左侧主工具栏单击"Welcome"按钮后显示实例的界面。这时工作区的左侧有"Projects""Examples""Tutorials""Get Started Now"几个按钮,单击后会在主工作区显示相应的内容。

  • 单击"Projects"按钮后,工作区显示新建项目按钮和最近打开项目的列表。

  • 单击"Examples"按钮后,工作区显示Qt自带的大量实例,选择某个实例就可以在Qt Creator中打开该项目源程序。

  • 单击"Tutorials"按钮后,工作区显示各种视频教程,查看视频教程需要联网并使用浏览器打开。

  • 单击"Get Started Now"按钮,工作区显示"Qt Creator Manual"帮助主题内容。

主窗口左侧是主工具栏,主工具栏提供了项目文件编辑、窗体设计、程序调试、项目设置等各种功能按钮。

1.3.2 Qt Creator的设置

对Qt Creator可以进行一些设置,如刚安装好的Qt Creator界面语言可能是中文,但是很多词汇翻译得并不恰当,可以将Qt Creator的界面语言设置为英文。

单击Qt Creator菜单栏的"Tools"→"Options"菜单项会打开选项设置对话框(如原书的图1-4所示)。对话框的左侧是可设置的内容分组,单击后右侧出现具体的设置界面。常用的设置包括以下几点。

1.Environment设置:在Interface页面可以设置语言和主题,本书全部以英文界面的Qt Creator进行讲解,所以语言选择为English;为了使界面抓图更清晰,设置主题为Flat Light。更改语言和主题后需要重新启动Qt Creator才会生效。

2.Text Editor设置:在此界面可以设置文本编辑器的字体,设置各种类型文字的字体颜色,如关键字、数字、字符串、注释等字体颜色,也可以选择不同的配色主题。编辑器缺省字体的大小为9,可以修改得大一些。

3.Build & Run设置:原书的图1-4显示的是Build & Run的设置界面,它有以下几个页面。

(1)Kits页面显示Qt Creator可用的编译工具,在图中可以看到有3个编译工具可用。

(2)Qt Versions页面显示安装的Qt版本,有Qt 5.9.1 MinGW 32bit、Qt 5.9.1 MSVC2015 32bit和Qt 5.9.1 MSVC2015 64bit 3个可用的版本。

(3)Compliers页面显示系统里可用的C和C++编译器,由于安装了MinGW和Visual Studio 2015,Qt Creator会自动检测出这些编译器。

(4)Debuggers页面显示Qt Creator自动检测到的调试器,有GNU gdb for MinGW调试器和Windows的CDB调试器。

注意:如果只是在计算机上安装了Visual Studio 2015,原书的图1-4显示的界面上MSVC2015的两个编译器的图标会变为带有感叹号的一个黄色图标。Debuggers页面没有Windows的CDB调试器,可以用MSVC编译器对Qt Creator编写的程序进行编译,但是不能调试,这是因为缺少了Windows Software Development Kit (SDK)。这个SDK不会随Visual Studio一同安装,需要从Microsoft网站上下载。可以下载Windows Software Development Kit (SDK) for Windows 8.1,安装后重启计算机即可。

1.4 编写一个Hello World程序

学习一种编程语言或编程环境,通常会先编写一个"Hello World"程序。我们也用Qt Creator编写一个"Hello World"程序,以初步了解Qt Creator设计应用程序的基本过程,对使用Qt Creator编写Qt C++应用程序建立初步的了解。

1.4.1 新建一个项目

单击Qt Creator的菜单项"File"→"New File or Project",出现如原书的图1-5所示的对话框。在这个对话框里选择需要创建的项目或文件的模板。

Qt Creator可以创建多种项目,在最左侧的列表框中单击"Application",中间的列表框中列出了可以创建的应用程序的模板,各类应用程序如下。

  • Qt Widgets Application,支持桌面平台的有图形用户界面(Graphic User Interface,GUI)界面的应用程序。GUI的设计完全基于C++语言,采用Qt提供的一套C++类库。

  • Qt Console Application,控制台应用程序,无GUI界面,一般用于学习C/C++语言,只需要简单的输入输出操作时可创建此类项目。

  • Qt Quick Application,创建可部署的Qt Quick 2应用程序。Qt Quick是Qt支持的一套GUI开发架构,其界面设计采用QML语言,程序架构采用C++语言。利用Qt Quick可以设计非常炫的用户界面,一般用于移动设备或嵌入式设备上无边框的应用程序的设计。

  • Qt Quick Controls 2 Application,创建基于Qt Quick Controls 2组件的可部署的Qt Quick 2应用程序。Qt Quick Controls 2组件只有Qt 5.7及以后版本才有。

  • Qt Canvas 3D Application,创建Qt Canvas 3D QML项目,也是基于QML语言的界面设计,支持3D画布。

在原书的图1-5显示的对话框中选择项目类型为Qt Widgets Application后,单击"Choose..."按钮,出现如原书的图1-6所示的新建项目向导。

在图1-6中,选择一个目录,如"G:\Qt5Book\Qt5.9Samp\chap01",再设置项目名称为samp1_1,这样新建项目后,会在"G:\Qt5Book\Qt5.9Samp\chap01"目录下新建一个目录,项目所有文件保存在目录"G:\Qt5Book\Qt5.9Samp\chap01\samp1_1\"下。

在图1-6中设置好项目名称和保存路径后,单击"Next"按钮,出现如原书的图1-7所示的选择编译工具的界面,可以将3个编译工具都选中,在编译项目时再选择一个作为当前使用的编译工具,这样可以编译生成不同版本的可执行程序。

在原书的图1-7显示的界面中单击"Next"按钮,出现如原书的图1-8所示的界面。在此界面中选择需要创建界面的基类(base class)。有3种基类可以选择:

  • QMainWindow是主窗口类,主窗口具有主菜单栏、工具栏和状态栏,类似于一般的应用程序的主窗口;

  • QWidget是所有具有可视界面类的基类,选择QWidget创建的界面对各种界面组件都可以支持;

  • QDialog是对话框类,可建立一个基于对话框的界面。

在此选择QMainWindow作为基类,自动更改的各个文件名不用手动去修改。勾选"Generate form"复选框。这个选项如果勾选,就会由Qt Creator创建用户界面(User Interface,UI)文件,否则,需要自己编程手工创建界面。初始学习,为了了解Qt Creator的设计功能,勾选此选项。然后单击"Next"按钮,出现一个页面,总结了需要创建的文件和文件保存目录,单击"Finish"按钮就可以完成项目的创建。

1.4.2 项目的文件组成和管理

完成了以上新建项目的步骤后,在Qt Creator的左侧工具栏中单击"Edit"按钮,可显示如原书的图1-9所示的窗口。窗口左侧有上下两个子窗口,上方的目录树显示了项目内文件的组织结构,显示当前项目为samp1_1。项目的名称构成目录树的一个根节点,Qt Creator可以打开多个项目,但是只有一个活动项目(Active Project),活动项目的项目名称节点用粗体字体表示。

在项目名称节点下面,分组管理着项目内的各种源文件,几个文件及分组分别为以下几项。

  • samp1_1.pro是项目管理文件,包括一些对项目的设置项。

  • Headers分组,该节点下是项目内的所有头文件(.h),图1-9中所示项目有一个头文件mainwindow.h,是主窗口类的头文件。

  • Sources分组:该节点下是项目内的所有C++源文件(.cpp),图1-9中所示项目有两个C++源文件,mainwindow.cpp是主窗口类的实现文件,与mainwindow.h文件对应。main.cpp是主函数文件,也是应用程序的入口。

  • Forms分组:该节点下是项目内的所有界面文件(.ui)。图1-9中所示项目有一个界面文件mainwindow.ui,是主窗口的界面文件。界面文件是文本文件,使用XML语言描述界面的组成。

左侧上下两个子窗口的显示内容可以通过其上方的一个下拉列表框进行选择,可以选择的显示内容包括Projects、Open Documents、Bookmarks、File System、Class View、Outline等。在图1-9中,上方的子窗口显示了项目的文件目录树,下方显示打开的文件列表。可以在下方选择显示Class View,这样下方则显示项目内所有的类的结构,便于程序浏览和快速切换到需要的代码位置。

双击文件目录树中的文件mainwindow.ui,出现如图1-10所示的窗体设计界面,这个界面实际上是Qt Creator中集成的Qt Designer。窗口左侧是分组的组件面板,中间是设计的窗体。在组件面板的Display Widgets分组里,将一个Label组件拖放到设计的窗体上面。双击刚刚放置的Label组件,可以编辑其文字内容,将文字内容更改为"Hello, World!"。还可以在窗口右下方的属性编辑器(Property Editor)里编辑标签的Font属性,Point Size更改为12,勾选Bold。

1.4.3 项目的编译、调试与运行

单击主窗口左侧工具栏上的"Projects"按钮,出现如原书的图1-11所示的项目编译设置界面。

界面左侧一栏的"Build & Run"下面显示了本项目中可用的编译器工具,要使用哪一个编译器用于项目编译,单击其名称即可,选择的编译器名称会用粗体字表示。这里选择使用MinGW 32bit编译器。

每个编译器又有Build和Run两个设置界面。在Build设置界面上,有一个"Shadow build"复选框。如果勾选此项,编译后将在项目的同级目录下建立一个编译后的文件目录,目录名称包含编译器信息,这种方式一般用于使用不同编译器创建不同版本的可执行文件。如果不勾选此项,编译后将在项目的目录下建立"Debug"和"Release"子目录用于存放编译后的文件。

在设计完mainwindow.ui文件,并设置好编译工具之后,就可以对项目进行编译、调试或运行。主窗口左侧工具栏下方有4个按钮,其功能见表1-1。

表1-1 编译调试工具栏按钮的作用

图标 作用 快捷键
弹出菜单选择编译工具和编译模式,如Debug或Release模式
直接运行程序,如果修改后未编译,会先进行编译。即使在程序中设置了断点,此方式运行的程序也无法调试。 Ctrl+R
项目需要以Debug模式编译,点此按钮开始调试运行,可以在程序中设置断点。若是以Release模式编译,点此按钮也无法进行调试。 F5
编译当前项目 Ctrl+B

首先对项目进行编译,没有错误后,再运行程序。程序运行的界面如原书的图1-12所示。这就是一个标准的桌面应用程序,我们采用可视化的方式设计了一个窗口,并在上面显示了字符串"Hello,World!"。

在Qt Creator中也可以对程序设置断点进行调试,但是必须以Debug模式编译,并以"Start Debugging"(快捷键F5)方式运行程序。程序调试的方法与一般IDE工具类似,不再详述。注意,要在Qt Creator里调试MSVC2015编译的程序,必须安装Windows软件开发工具包SDK。

在图1-11的界面中选择其他编译器,并且勾选"Shadow build",用Debug和Release模式分别编译,将会在项目的同级目录下生成对应的目录,保存编译后的文件。图1-13显示的是实例samp1_1采用3种编译器,分别用Debug和Release模式编译后生成的目录结构。3种编译器,2种编译模式,生成了6个文件夹。

提示:除非特别说明,本书后面的实例程序均在Windows 7.0 SP1 64位平台上用Qt Creator 4.3.1开发,采用Qt 5.9.1的MinGW 32bit编译器进行编译。只有在第12章设计Qt Designer的Widget插件时才必须使用MSVC2015 32bit编译器,在第15.5节使用摄像头录像时必须使用Linux平台的Qt。

1.5 在Visual Studio里使用Qt

在Qt Creator中可以使用MSVC编译工具对Qt项目进行编译。若有人比较习惯于使用Visual Studio,或某些项目必须使用Visual Studio,也可以在Visual Studio里创建和管理Qt程序项目。要在Visual Studio中使用Qt,需要安装一个Visual Studio的Qt插件,这个插件程序由Qt公司提供。

目前最新的Visual Studio Qt插件是"Visual Studio Add-in 2.0.0 for Qt5 MSVC 2015",可以从Qt官网下载并安装。安装此插件之前,需已经安装好Visual Studio 2015。

这里省略Visual Studio Add-in 2.0.0 for Qt5的安装过程。安装完成后,在Visual Studio的主菜单栏上增加了一个菜单组"Qt VS Tools",在新建项目向导里增加了可创建Qt项目的项目模板。

在Visual Studio 2015里创建一个Qt GUI应用程序项目。创建项目时选择项目模板的对话框如原书的图1-14所示,选择创建Qt GUI Application项目,根据向导提示完成项目samp1_2的创建。

按照向导缺省设置创建完项目后,Visual Studio管理项目的全部文件,有一个samp1_2.ui的窗体文件,双击此文件,会自动使用Qt Designer打开窗体文件进行界面设计,如同在Qt Creator里设计窗体一样。

在首次使用Visual Studio编译Qt项目之前,必须先进行一些设置,否则会提示没有设置Qt版本,无法编译项目。

首先要设置Qt版本。单击Visual Studio菜单项"Qt VS Tools"→"Qt Options",出现如原书的图1-15所示的对话框。Qt Versions页面显示了可以使用的Qt版本(这是已经设置好的界面),在未设置之前,框里是空白的。单击"Add"按钮出现如原书的图1-16所示的添加Qt版本对话框。

单击"Path"文本框后面的按钮,在出现的目录选择对话框里选择Qt 5.9.1安装目录下的MSVC编译器目录,如"D:\Qt\Qt5.9.1\5.9.1\msvc2015_64"。选择目录后,Version name编辑框里会自动出现版本名称,可以修改此名称为意义更明显的名字,如"msvc2015-64bit"。

然后,再单击Visual Studio菜单项"Qt VS Tools"→"Qt Project Settings",为项目设置Qt版本,出现如原书的图1-17所示的对话框。在此对话框的Properties分页下的列表框里,在Version下拉列表框中选择某个Qt版本。

完成这两项设置后,再进行编译就没有问题了。项目的运行、调试等就都是Visual Studio的操作了,这里不再赘述。

提示:在Qt Creator里就可以使用MSVC编译器对项目进行编译,并不是只有在Visual Studio里才可以使用MSVC编译器编译Qt的项目。

相关推荐
梦回初遇勿扰佳人1 小时前
《半小时漫画世界史》 -- 读后笔记
笔记
1314lay_10073 小时前
SAP 接口调用 500 Native SSL Error ,导入证书
经验分享·笔记
百里香酚兰3 小时前
【Unity学习笔记】如何把粉色Prefab还原
笔记·学习·unity
小叶肥辉4 小时前
LangChain链和LangGraph图的学习笔记【六】——提示语模板(3)——Few-Shot Prompting(少样本提示) 模板类
笔记·python·学习·langchain·prompt·aigc
志尊宝5 小时前
Vue3 零基础每日笔记(032):Suspense 与异步组件——懒加载与顶层 await 终极方案
前端·javascript·vue.js·笔记·html5
今儿敲了吗5 小时前
04英文文本关键词提取(TF-IDF)
笔记·python
志尊宝5 小时前
Vue3 零基础每日笔记(035):什么是 Composables——mixin 之死与逻辑复用新方案
笔记·vue·html·前端开发·软件开发
动词ing6 小时前
【学习笔记】数据结构 二分查找(二分查找模板+边界处理+查找区间+旋转数组)
笔记·学习
kkkkkkkkkk_Z6 小时前
学嵌入式和Linux应用编程|学习日记:深入理解TCP协议与网络编程实战
linux·笔记·学习