C++
文章平均质量分 70
@凌晨三点半
人生没有重来,过好当下的生活
展开
-
Linux网络编程之select的理解
这两天在学习linux网络编程,其中学习到了select框架,有些地方百思不得其解。今天搞明白了,在这里记录下。原创 2024-06-07 17:24:30 · 880 阅读 · 0 评论 -
Qt5转Qt6笔记
想用qt6又不能完全脱离现有的qt5。该怎么办呢原创 2024-02-26 15:35:56 · 1082 阅读 · 0 评论 -
启动qt程序实例时报错:error: cannot find -lc++ clang++: error: linker command failed with exit code 1的解决办法
通过QML开发安卓应用。然后根据书上的示例启动应用。报错:error: cannot find -lc++ clang++: error: linker command failed with exit code 1再确认开发环境选项中都没有配置错误后。去百度各种搜索。终于找到了问题的解决办法(貌似这是QT的一个bug)去到QT安装目录下安卓构建套件中修改qmake.conf配置文件:# 路径(根据自己的QT安装路径来选择):# D:\Qt\Qt5.12.2\5.12.2\android_armv原创 2020-09-22 23:50:51 · 1739 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第十六章 算法 其他库
总体设计通过迭代器来标识要处理的数据区间和结果放置位置,有些算法函数接收参数使用模板来提供泛型使用迭代器来访问容器中的通用表示STL算法分组:非修改式序列操作:操作容器元素但不修改:find(),for_each()等<algorithm>修改式序列操作:可以修改容器内容或排列顺序transform(), random_shuffle() copy()等...原创 2019-06-24 13:46:33 · 324 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第十六章 string类
string类的构造函数构造函数程序示例:#include <iostream>#include <string>int main(){ using namespace std; string one("Lottery Winner!"); cout << one << endl; string two(20, ...原创 2019-06-12 13:47:51 · 176 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第十六章 泛型编程 STL模板类
先说第一个容器vector: 就是第四章说的那货。好像没啥可说的大概用法格式程序示例#include <iostream>#include <string>#include <vector>const int NUM = 5;int main(){ using std::vector; using std::st...原创 2019-06-17 17:41:21 · 197 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第十六章 函数符
啥是函数符有定义了operator()()的类函数符概念这些都是概念 就是一个称呼程序示例#include <iostream>#include <list>#include <iterator>// STL的算法库#include <algorithm>template<class T>cl...原创 2019-06-21 17:09:20 · 510 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第十五章 异常 abort() 返回错误提示,try-throw-catch exception和其派生类 RTTI 类型转换运算符
abort() 来源于cstdlib 或 stdlib.h中 手动调用该函数来终止程序。 程序会跳出如下信息然后程序终止untenable arguments to hmean()This application has requested the Runtime to terminate it in an unusual way.Please contact the applicat...原创 2019-06-11 14:30:47 · 3066 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第十四章 指针类型模板 模板多功能型 模板的具体化
程序示例stcktp1.h#ifndef STCKTP1_H_#define STCKTP1_H_template <class Type>class Stack{ private: enum {SIZE = 10}; int stacksize; Type * items; int top; public: expl...原创 2019-06-04 14:20:10 · 413 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第十五章 友元类 友元成员函数 其他友元关系 共同的友元 嵌套类
与友元函数类似。代码:tv.h#ifndef TV_H_#define TV_H_class Tv{ public:// 这就是友元类的写法 friend class Remote; enum {Off, On}; enum {MinVal, MaxVal = 20}; enum {Antenna, Cable}; enum {T...原创 2019-06-10 15:43:14 · 224 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第十六章 关联容器
字典数据结构为树元素查找比链表快4种关联容器set, multiset, <set>map, multimap, <map>set:键就是值 唯一multiset 不唯一。可以有多个重复的键值可翻转,可排序格式: set<string> A;可以显示的指定排序的函数或对象 默认用less<> :set&...原创 2019-06-20 09:42:15 · 233 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第十六章 泛型编程 迭代器,容器
迭代器的意义迭代器应该有的特征前i++和++i的操作符重写建议stl总结STL的五种迭代器类型1.输入迭代器(读取容器中的数据)不修改容器中的值上图说的情况可能是指类似链表一样的数据结构的迭代2.输出迭代器(修改容器内的值,不读取)3.正向迭代器输入迭代器 + 输出迭代器只能往前走( + )不能回头看( - )4....原创 2019-06-19 15:05:43 · 305 阅读 · 0 评论 -
C++ Primer Plus学习笔记 第十四章 类模板
跟函数模板差不多 我直接上代码吧stacktp.h#ifndef STACKTP_H_#define STACKTP_H_template<class Type>class Stack{ private: enum {MAX = 10}; Type items[MAX]; int top; public: Stack(); ...原创 2019-06-03 14:35:24 · 181 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第十七章 cin
cin支持的类型也支持 signed char*, char*, unsigned char*cin连续输入的话会跳过空格, 换行符, 制表符会再不符合变量类型的输入流前面停止。并且将不符合的字符留在输入流中#include <iostream>int main(){ using namespace std; cout << "Ent...原创 2019-06-26 16:46:14 · 401 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第十七章 I/O
fstream写入: ofstream对象 << 或者write()读取: ifstream对象 >> 或者get()使用open函数关联文件或者直接用ofstream类型的构造函数来关联文件 没有该文件则会创建该文件ofstream是ostream的继承类 所以可以使用ostream的所有函数默认打开方式是截断 也就是清空文件内容程序示...原创 2019-07-02 10:02:14 · 341 阅读 · 0 评论 -
C++ Primer Plus学习笔记 第十七章 内核格式化
sstream族提供与iosream相同的接口提供程序与string对象之间的I/O读取string对象中的格式化信息和将格式化信息写入到string对象中称为内核格式化(。。。跟内核有毛关系啊)string:sstreamchar字符数组: strstream.hsstream -> ostringstream string对象的输入流类 ...原创 2019-07-02 11:01:00 · 229 阅读 · 0 评论 -
C++产随机数
使用rand()来获得随机数返回的是0到RAND_MAX间 最大值是2147483647来自cstdlib头例子:#include <iostream>#include <cstdlib>using std::cout;int main(){ cout << rand() << '\n'; return 0;}数值范围选择...原创 2019-09-16 11:53:06 · 138 阅读 · 0 评论 -
C++ for循环的几种使用方法
普通的for循环for(int n = 0; n < 50; ++n) std::cout << n << '\n';用于容器的for循环for(auto it=list.begin(); it!=list.end(); ++it) cout << *it << '\n'; 简易for循环for each(auto...原创 2019-09-16 08:59:40 · 21883 阅读 · 0 评论 -
c++11 关于如何将const char* 变量通过strcpy赋值给未初始化的char*变量
关于如何将const char* 变量通过strcpy赋值给未初始化的char*变量首先,未初始化的char*变量只是一个char指针而strcpy(char* p, const char* s)是将两个指针解引用。然后进行拷贝。如果直接通过strcpy函数来将s赋值给未初始化的p。就会造成内存溢出。因为 p它指向一个未知的地址。解引用出来也不知道空间多大,是什么鬼东西。所以...原创 2019-08-13 10:10:09 · 3499 阅读 · 0 评论 -
C++和QT用正则过滤汉字
要用正则过滤汉字的话需要使用unicode编码所有的汉字都在\u4e00--\u9fa5中 那每一个汉字的编码具体可以去查unicode汉字编码表具体的表我就不发了 直接百度搜索一大把 搜索到了之后然后ctrl+f搜索想要的字就行...原创 2019-08-22 10:13:48 · 632 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第十八章 lambad 匿名函数, 包装器
没有函数名的函数格式程序示例#include <iostream>#include <vector>#include <algorithm>#include <cmath>#include <ctime>const long Size1 = 39L;const long Size2 = 100*Size1...原创 2019-07-04 15:12:11 · 333 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第十八章 移动语义和右值引用, 默认构造函数和禁用函数, 委托和继承构造函数,override和final
移动语义:简单地说就是 复制对象或者其他数据的时候 不再是通过创建临时对象,复制构造函数,创建新的对象,删除构造函数这样的方法了而是将需要新对象的地方(变量)直接指向该数据,而数据本身不做任何移动或者改变。 这需要配合右值引用的使用才可以达到此目的程序例子#include <iostream>using namespace std;class Useless{...原创 2019-07-03 12:46:29 · 353 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第十七章 使用cout进行输出
管理输入包含两步将流与输入去向的程序关联起来将流与文件连接起来管理输出也是将流与输出去向连接起来将流与文件连接起来文件不一定是指文件 也有可能是其他的 比如打印机啦 扫描仪,摄像头啦之类的管理缓冲区的类cout <<运算符重载后能识别的所有的基本类型 也支持字符(包括数组)指针和string指针,其他类型要(void *)强转成指针即可输出c...原创 2019-06-24 18:24:02 · 218 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第十八章 可变参数
嗯。。。这不就是python的**kwargs么有几个概念要懂模板参数包函数参数包展开参数包递归先说模板参数包和函数参数包:template<typename T>void show_list(T value){};这是常规的模板函数那如果加上参数包template<typename ... Args> (模板参数包) ...原创 2019-07-08 14:22:31 · 226 阅读 · 0 评论 -
C++ Primer Plus学习笔记 第十八章 C++11新标准
新增 long long 和 unsigned long long char16_t char32_t string新增初始化列表{1, 2, 3, 4} 对象初始化也能这么用除了有奖std::initializer_list作为参数的构造函数。那么只有该构造函数可以使用列表初始化列表初始化 禁止类型缩窄,但允许加宽std:initializer_listauto 关键字 ...原创 2019-07-02 12:48:58 · 207 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第十四章 保护继承 多重继承
保护继承保护继承会将基类的共有成员和保护成员继承为派生类的保护成员如果派生保护或派生私有的,又希望在派生类之外使用该类的方法。咋搞?1. 新建函数,然后在函数中调用临时基类对象第二种方法,在声明中直接使用using声明使用基类的某个函数这样不管const还是非const的版本都可以用。以上方法只适用于继承而不是包含。多重继承:每个继承的基类都需...原创 2019-06-03 13:21:20 · 297 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 十三章 多态公有继承 虚函数,静态联编与动态联编 协变
如果对象变量的指针或引用类型为基类。 name调用同一个函数时,默认调用的是基类的函数。如果在函数前加上virtual表示虚函数时编译器就不会通过指针或引用类型来判断 而是通过对象类型来判断调用哪一个函数了。派生类调用基类的函数 使用作用域解析运算符Bass::function()如果积累已经将成员函数设置为虚函数了 那派生类对这个函数声明的时候可加可不加v...原创 2019-05-29 18:23:47 · 298 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第十六章 string类, 智能指针模板类
使用string类string类对每个关系运算符都做了重载 并且都以三种方式被重载:string 与stringstring与c-stringc-string 与 string用心, 赞!size()和length()都能够返回字符串中的字符数 效果一样find()string类的内存分配原理程序示例#include <iostream&...原创 2019-06-13 11:49:17 · 239 阅读 · 0 评论 -
C++ Printer Plus学习笔记 第七章 函数与string 函数与array 递归 函数指针
函数与对象: 没啥内容 直接上示例吧#include <iostream>#include <string>using namespace std;const int SIZE = 5;void display(const string sa[], int n);int main(){ string list[SIZE]; cout <&l...原创 2019-05-07 15:52:35 · 207 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第八章 引用与对象
基类的引用可以接受子类对象的引用关于格式化输出引用的使用原则函数重载:类型本身和类型引用将视为同一个特征标。C++拒绝二义性也不区分const 和非const但是有区分是否是const指针还是常规指针返回类型不决定是否不同关于引用参数的函数重载何时使用函数重载:...原创 2019-05-09 14:29:31 · 134 阅读 · 0 评论 -
C++ Printer Plus学习笔记 第八章 内联函数 引用
示例:#include <iostream>// 关键字 inline 代码块必须简短inline double square(double x) {return x * x; }int main(){ using namespace std; double a, b; double c = 13.0; a = square(5.0); b = ...原创 2019-05-08 15:03:46 · 230 阅读 · 0 评论 -
C++ Print Plus 学习笔记 第七章 const与指针 函数和结构 函数和二维数组 函数和结构
注意点:不能通过const指针来改变数据(因为不能保证指向的也是常量) 只能通过变量名来更改(非const变量的情况下) 但是可以更改const指针的指向(但依然不能更改值) const int* ps = &abc 这种的话是不允许指正指向其他地址: int* const ps = &abc 如果指向的是非const变量的话 可以更改其值 那 c...原创 2019-05-05 14:48:23 · 256 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第四章 结构类型,共用体,枚举,指针
C++11的结构初始化可以不带等号inflatable duck {"Daphne", 0.12, 9.98}或者inflatable duck{} 这样各个成员被设置为0 不允许缩窄转换共用体是结构体的变种 共享一个变量枚举类:枚举支持赋值表达式,但不支持算数表达式。也不支持int类型的数值直接赋值(包括long long long类之类的整...原创 2019-04-19 17:09:24 · 207 阅读 · 0 评论 -
C++ Printer Plus学习笔记 第五章 循环延迟,类型别名,文本输入的循环,文件尾条件,嵌套循环
while基本内容没啥好说的跟其他的语言一个样主要属下延时循环的注意:#include <iostream>#include <ctime>int main(){ using namespace std; cout << "Enter the delay time, in seconds: "; float secs; c...原创 2019-04-24 14:03:03 · 275 阅读 · 0 评论 -
C++ Printer Plus 学习笔记 第七章 函数 函数和数组
函数原型:0. 函数原型就是 放在int前面声明函数名称,传参类型和返回类型的一个语句1. 为什么需要函数原型2. 原型的语法:returntype functionname(typename);3.原型的功能:简单的数据类型 正常是按值传递。 而复杂数据类型就是按引用传递int sum = sum_arr(int arr[], int n) 这边的arr[] ...原创 2019-04-28 14:27:11 · 366 阅读 · 0 评论 -
C++ Printer Plus学习笔记 第四章 复合类型之字符串
数组编译器不会去判断数组下标是否越界。但是在程序运行后,这种赋值可能引发问题。 它可能破坏数据或代码。也可能导致程序异常终止。C++ 风格的数组初始化int yamcosts[3] = {20, 30, 5}; 或者(C++11) int yamcosts[3] {20, 30, 5};int yamcosts[8] = {20, 30, 5}; 这样只会初始化前三个 其他的全部默认...原创 2019-04-18 15:50:08 · 270 阅读 · 0 评论 -
C++ Printer Plus学习笔记 第五章 for循环 递增递减运算符 关系表达式 字符串比较
这张主要讲循环 比较简单 就记录一些关键的吧关于 x++ 和++x的副作用++x 比 x++的效率更高关于指针的++ 和--取决于是在*号前面还是后面*++x: 根据结合顺序(右到左)会先将x指针移动一位(根据类型决定一位的长度)再解引用++*x :根据结合顺序(右到左) 会先解引用,然后自增1(*pt)++: 根据优先级,会先解引用,然后自加1...原创 2019-04-23 13:59:46 · 422 阅读 · 0 评论 -
C++ Print Plus 学习笔记 第六章 分支、逻辑表达式、cctype、 三元运算 switch 类型错误的文本处理 和I/O
if ifelse ifelseif 这三个 都不说了有一个要留意关于逻辑表达式要留意的:|| 运算顺序是先算左边再算右边 如果左边为true 那他就不管右边了 。直接返回truecctype:三元运算:#include <iostream>int main(){ using namespace std; int a, b; co...原创 2019-04-26 15:45:45 · 230 阅读 · 0 评论 -
C++ Primer Plus 学习笔记 第四章 指针、数组和指针算数
double wages[3] = {10000.0, 20000.0, 30000.0}; short stacks[3] = {3, 2, 1}; double* pw = wages; short* ps = &stacks[0];pw指向wages的第一个元素的内存地址&wages指的是整个内存的地址。 所以 sizeof 返回的是整个数组的...原创 2019-04-22 14:49:07 · 248 阅读 · 0 评论 -
C++ Primer Plus学习笔记 第九章 无连接性的静态变量 说明符和限定符 函数和语言的连接性 定位new
1. 局部变量的static 无连接性,程序在它就在。 具体意思就是 只能用于局部,但是在内存之一直存在。直到程序退出这种静态变量适用于做计数器。说明符和限定符说明符:auto register static extern 这几个前面都有说过 不说了thread_local 用于线程 指出变量的持续性与线程的程序性相同 类似static 只是针对于线程mutable...原创 2019-05-20 14:59:39 · 269 阅读 · 0 评论