- 博客(12)
- 收藏
- 关注
原创 C++11 右值引用
C++11右值引用概念左值引用右值引用常量左值引用通过右值引用减少拷贝次数std::move(左值)概念本文主要讲述右值引用相关概念,讲到右值,当然是相对于左值而言。简单理解,能够取地址的 “对象” 为左值,相反则为右值,这里的 “对象” 包含变量、立即数、函数返回值、类型等一切我们想要它进行操作的 target。左值引用typename T;T a; //a 即是一个左值,对它的引用就是左值引用:T& p = a;右值引用右值可以细分为纯右值和将亡值()。如
2021-10-15 11:15:23 182
原创 字符串匹配
字符串BF算法KMP算法代码实现字符串的存储结构:线性表:包括顺序存储、链式存储BF算法是一种朴素的模式匹配算法。核心思想:——有两个字符串S和T,长度为N和M。首先S[1]和T[1]比较,若相等,则比较S[2]和T[2],一直到T[M]为止;若S[1]和T[1]不等,则T向右移动一格字符的位置,再依次比较。核心思想是回溯,效率较低。KMP算法核心是避免不必要的回溯。思路一思路二思路三思路四考虑上述四种情况,形成KMP算法。检查失配位置,比较失配位置前的子串,子串的前缀
2021-06-10 22:03:46 163
原创 其他主题
const_cast运算符C++提供 const_cast运算符,可以强制去除变量的const 和 volatile 属性. 如const char* maximum(const char*first,const char* second);......char* maxPtr = const_cast<char*>(maximum(s1,s2));如果没有const_cast<char*>,编译器将会报错,因为无法将const char赋值给char关于volatil
2021-05-05 14:41:20 116
原创 位,字符,C字符串
位,字符,字符串位运算符基本概念代码演示位域字符处理库C字符串操作函数C字符串转换函数C字符串操作库中的搜索函数C字符串操作库中的内存函数#位,字符,字符串位运算符基本概念大多数系统中,8位构成一个自己-—字符型变量标准存储单位。其他类型数据以更多字节存储。位运算符用来操作整型操作数(char,int,short,long,包括signed和unsigned), 中的位。通常处理unsigned类型整数。位运算符:位与(&),位或(|),位异或(^),位取反(~),左移(<<
2021-05-05 11:07:02 466
原创 string类和字符串流深入剖析
string类和字符串流深入剖析简介字符串赋值和连接字符串比较字串交换字符串大小,长度,容量,最大长度,及其他特性查找string的子串和字符字符串中替换和插入字符转成C风格基于指针的字符串迭代器字符串流处理字符串数值转换函数数值转换为字符串对象字符串对象转换为数值把字符串转换为整型的函数把字符串转换为浮点型的函数简介初始化string对象 string text("Hello"); string name(8, 'x'); // 8 chars of 'x' string m
2021-05-04 22:30:56 758
原创 查找与排序
查找与排序查找算法排序算法查找算法线性查找,按顺序逐一与查找关键字比较二分查找对排好序的array对象,作二分查找//**********创建基于数组的二分查找函数模板#include <array>#include <iostream>template <typename T, const size_t SIZE> int binarySearch(const std::array<T,SIZE>&arr,const T&am
2021-05-04 19:29:56 75
原创 树
树简介二叉查找树实现类模板TreeNode类模板Tree简介链表、对战和队列都是线性数据结构,树是非线性、二维数据结构。树的结点包含两个或更多个链接.二叉树,所以节点都包含两个链接(链接中没有或有一个或有两个是nullptr.二叉查找树,左子树值小于父节点,右子树值大于父节点。同一组二叉查找树的形状可以不同。中序遍历,对给定每个点先处理左子树,再处理该节点,最后处理右子树,是一种升序遍历前序遍历,先处理给定点,再处理左子树,最后处理右子树。后续遍历,先处理左子树,再处理右子树,最后处理给定点
2021-05-03 19:55:55 66
原创 自定义的模板化数据结构(1)
自定义的模板化数据结构简介自引用类链表简介链表“排列在一行”的数据项的集合——在链表中的任何一个数据项上都可以进行插入和删除操作堆栈(区分数据结构中的堆栈与存储结构中的堆和栈)是编译器和操作系统中重要的数据结构:元素的插入和删除只能在堆栈的一端——栈顶进行。队列插入操作在队尾进行,删除操作在队列头进行,FIFO。二叉树便于数据搜索和排序,去重,以及把表达式编译为机器语言。如果可以,始终倾向于标准库的容器、迭代器和算法。自引用类一个自引用类包含一个指向与它同类的对象的指针成员cl
2021-05-03 13:28:27 293
原创 泛型程序设计
泛型程序设计自定义模板1 创建类模板2 用函数模板来操作类模板特化的对象3 非类型形参4 模板类型形参的默认实参5 重载函数模板自定义模板1 创建类模板类模板接口没有与实现分离,模板通常定义在头文件中,成员函数也定义在头文件中。//*********创建一个基于deque容器的自定义stack适配器,named Stack#ifndef STACK_H#define STACK_H#include<deque>template<typename T>clas
2021-05-02 21:20:37 70
原创 C++|异常处理
C++异常处理1 定义一个异常类2 throw, try{}catch{}异常终止模式:重新抛出异常:1 定义一个异常类定义异常类DivideByZeroException,继承自标准库类runtime_error(定义在头文件< stdexcept >)的一个派生类,runtime_error又是标准库exception(定义在头文件< exception >中)类的派生类。runtime_error是C++用于描述运行时错误的标准基类。exception是C++标准库用于
2021-05-02 16:06:05 404
原创 STL标准库算法
STL标准库算法在这里插入代码片```/************************************************************ 标准库算法**********************************************************/#include <vector>#include<iostream>#include <iterator>#include &
2021-05-02 10:05:16 69
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人