- 博客(13)
- 资源 (5)
- 收藏
- 关注
原创 C++中获取数组的长度
1. 算术表达式:#include <iostream> int main() { int arr[4]; std::cout << sizeof( arr ) / sizeof( arr[0] ) << std::endl; // 输出4}注:数组形参和指针形参的方式传递数组,会有指针降级,即不能在自定义内部通过sizeof( arr ) / sizeof( arr[0] )的方式获取数组元素个数2. 函数模板参数自动推断:#includ
2020-08-30 13:34:10 1083
原创 json解析之C++库nlohmann / json
测试:https://wandbox.org/permlink/3lCHrFUZANONKv7a项目地址:https://github.com/ArthurSonzogni/nlohmann_json_cmake_fetchcontent/blob/master/include/nlohmann/json.hpp设计目标直观的语法。在像Python这样的语言中,JSON就像是一个一流的数据类型。我们使用了现代C++的所有操作符魔法,在您的代码中实现了相同的感觉。查看以下示例你会明白我的意思。
2020-08-27 12:20:45 16158 7
原创 正则表达式
notes:一行文本开始处匹配标记:^一行文本末尾处匹配标记:$匹配内容[]匹配长度{}为什么使用正则表达式?典型的搜索和替换操作要求您提供与预期的搜索结果匹配的确切文本。虽然这种技术对于对静态文本执行简单搜索和替换任务可能已经足够了,但它缺乏灵活性,若采用这种方法搜索动态文本,即使不是不可能,至少也会变得很困难。通过使用正则表达式,可以:测试字符串内的模式。例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。替换文本。可以使用正则表达..
2020-08-26 12:24:29 2846
原创 QT解析json文件
读取文件#include<QFile>QString filename(“3.json”);打开文件先判定文件是否存在,在打开文件(是否正确打开)if (!filename.exists()) { qDebug() << "file doesnt exist"; return -1; }if (!filename.open(QIODevice::ReadOnly)) { qDebug() << "some error when read t
2020-08-24 18:04:06 1994 1
原创 虚指针和虚表
所以当用sizeof来获取含有虚函数的类的大小的时候,会发现结果 比 里面还有的数据 大4个字节。这四个字节就是(虚)指针。(32位系统)子类里面有父类的成员变量。当然,父类有虚函数,自然 子类 就有虚函数。虚表里放的都是虚函数的指针,指向虚函数的地址。子类即使没有重写 父类的 虚函数, 子类的虚表里 也有虚函数,只不过是父类的虚函数。如上图中,B类没有重写 A类的 虚函数 vfun2(),那么B的虚表里的虚函数的指针就是和A类的那个虚函数指针相同的。调用虚函数,走的路线是:通过类的虚指针.
2020-08-03 22:44:38 429
原创 快排非递归实现 + 算法可视化网站
算法可视化网站:https://visualgo.net/zh/支持搜索:快速排序 非递归实现:void quickSortNonRecursive(vector<int> &nums, int low, int height){ stack<int> s; if (low<height) { int mid = getPartition(nums, low, height); if (mid-1>l
2020-08-03 22:01:54 188
原创 string
string 是 C++ 中常用的一个类。使用 string 类需要包含头文件,下面的例子介绍了几种定义 string 变量(对象)的方法:初始化#include <iostream>#include <string>using namespace std;int main(){ string s1; string s2 = "c plus plus"; string s3 = s2; string s4 (5, 's'); ret
2020-08-03 15:01:48 185
原创 转换函数 和 explicit
此时就不需要重载全局操作符+。首先是检查有没有全局重载对应的+,没有找到,再调用转换函数,如果没有则报错,有的调用其进行隐式转换。转换函数语法:返回类型就是double,所以不用写。所以转换函数不用写返回类型。另外呢,一般都加const(建议加)。(当然不加也可以编译通过)注:上图中的转换函数有问题,应该先将分子分母转成double再运算返回:#include <iostream>using namespace std;class Fraction{public: .
2020-08-03 13:16:59 163
原创 const成员变量和成员函数
const成员变量const 成员变量的用法和普通 const 变量的用法相似,只需要在声明时加上 const 关键字。初始化 const 成员变量只有一种方法,就是通过构造函数的初始化列表。初始化 const 成员变量构造函数初始化列表还有一个很重要的作用,那就是初始化 const 成员变量。初始化 const 成员变量的唯一方法就是使用初始化列表。例如 VS/VC 不支持变长数组(数组长度不能是变量),我们自己定义了一个 VLA 类,用于模拟变长数组:class VLA{private:
2020-08-03 12:15:36 316
原创 虚函数 和多态
继承 搭配 虚函数成员函数前 加virtual函数的继承 继承的是调用权。虚函数:希望对子类 重新定义(override重写),且已有默认定义纯虚函数:一定要重新定义。纯虚函数是可以有定义的。相关设计委托与继承的设计模式功能最强大的一种。关系:这是一种Observer的设计模式,适用于如有一份文件,多个窗口查看或者一份数据,有多种视图显示;;示例中Subject是数据类,Observer是显示类,可以被多个observer继承实现不同方式的查看。这种解法叫做 composi
2020-08-03 11:09:09 108
原创 关于 复合 和 继承 和 委托
复合的例子:为何不用继承?因为用继承的话,父类的接口仍然可以调用。所以这里 使用所谓的 组合,所谓的适配器Adapter就是这样实现的:这样组合起来,底层容器是deque,queue可以调用deque的接口去完成自己的接口,而deque里多于的接口,queue是希望屏蔽掉的。而这个的组合,就使得deque的接口没有暴露在外,而继承则会使得deque的接口可以使用。...
2020-08-02 22:18:19 188
原创 关于static
复习一下static成员变量和成员函数静态成员变量有时候我们希望在多个对象之间共享数据,对象 a 改变了某份数据后对象 b 可以检测到。共享数据的典型使用场景是计数,以Student 类为例,如果我们想知道班级中共有多少名学生,就可以设置一份共享的变量,每次创建对象时让该变量加 1。class Student{public: Student(char *name, int age, float score); void show();public: static int .
2020-08-02 21:33:13 206
原创 一个inline关键字引发的错误
这个问题找了好久,没找出原因。复习C++时候,写了个小程序,没想到编译出了错:main.cpp /**************** main.cpp ***************************/#include <iostream>#include "QzxString.h"using namespace qzx;int main() { QzxString s1; QzxString s2("hello"); QzxString s3(s2
2020-08-02 13:51:08 896
hymenoptera_data.zip
2020-04-01
cifar10data.zip
2020-03-31
libraries_v140_x64_py27_1.1.0.tar.bz2
2019-11-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人