- 博客(36)
- 收藏
- 关注
原创 新时代,新起点
三年弹指一挥间,往昔历城青葱少年,志向湾区,习数据结构。今长安花开,效太公旧事,望渭流汹涌,观云淡风轻。亿昔文王,释易观天下,凤鸣岐山,还在今朝。
2021-11-15 09:53:07 62
原创 数据结构图专题代码
#include <cstdio>#include <cstdlib>#include <iostream>#include <vector>#include <queue>#include <string>#include<deque>using namespace::std;#define M
2018-07-21 10:51:06 752
原创 二叉树操作集的错误及修正
using namespace::std;typedef int ElementType;typedef struct TNode *Position;typedef Position BinTree;struct TNode { ElementType Data; BinTree Left; BinTree Right;};BinTree Insert(BinTree BST...
2018-05-24 18:40:06 412
原创 数据结构第四章树及搜索树代码
#include <cstdio>#include <cstdlib>#include <iostream>#include <vector>#include <queue>using namespace::std;#define NoInfo 0struct TNode;using ElementType = int;...
2018-05-13 10:34:24 155
原创 数据结构第三章习题3.3
#include <iostream> #include <fstream> #include <string> #include <vector> #include <iterator> #include <initializer_list> #include <deque> #inc
2018-05-07 23:19:06 679
原创 数据结构第三章迷宫代码
#include <iostream>#include <fstream>#include <string>#include <vector>#include <iterator>#include <initializer_list>#include <deque>#include <l
2018-05-07 22:30:06 515
原创 数据结构第三章多项式加法
#include <iostream>#include <fstream>#include <string>#include <vector>#include <iterator>#include <initializer_list>#include <deque>#include <l
2018-05-06 21:45:20 225
原创 数据结构第三章队列链式实现
#include <iostream>#include <fstream>#include <string>#include <vector>#include <iterator>#include <initializer_list>#include <deque>#include <l
2018-05-05 10:43:12 151
原创 数据结构第三章队列线性实现代码
#include <iostream>#include <fstream>#include <string>#include <vector>#include <iterator>#include <initializer_list>#include <deque>#include <l
2018-05-04 23:25:16 161
原创 数据结构第三章顺序堆栈代码
#include <iostream>#include <fstream>#include <string>#include <vector>#include <iterator>#include <initializer_list>#include <deque>#include <list&
2018-05-03 22:41:32 210
原创 数据结构第二章线性表代码
#include <iostream>#include <fstream>#include <string>#include <vector>#include <iterator>#include <initializer_list>#include <deque>#include <l
2018-05-03 17:18:33 186
原创 数据结构第二章代码
#include <iostream>#include <fstream>#include <string>#include <vector>#include <iterator>#include <initializer_list>#include <deque>#include <list&
2018-05-01 19:08:12 308
原创 四月二十日总结
19.1控制动态分配new的过程实质上是operator new,包括三步:1.分配一块足够大的、原始的、未命名的内存空间以便储存特定的对象。2.编译器运行相应的构造函数以便存储特定的类型对象3.对象被分配了空间并构造完成delete实质上是operator delete,包括两步:1.对对象指向的元素执行析构函数2.释放内存空间由于自定义的new和delete极易发生错误,故暂不使用19.2运行...
2018-05-01 19:07:04 110
原创 数据结构第一章学习心得
这一章主要讲解时间和空间复杂度。时间复杂度T(n)表示一个程序解决所需时间Omega<=T<=O空间复杂度S(n)表示一个程序所需内存空间数据结构中最重要的概念是数据抽象数据抽象不依赖于元素类型,不依赖于存储方式,比依赖与具体实现 方法(如语言)算法:算法是一个有限指令集,它接受一些输入,产生输出并在一定步后结束递归解决方法的优点是思维简单,反复调用,缺点是空间复杂度远大于循环实现算法...
2018-04-27 23:37:14 484
原创 四月十九日学习心得
速览第十八章两个体会,一尽量使用using作用域声明既一个一个表示,而不是using指示所有的namespace。第二,namespace可以嵌套namespace a{inline namespace b{class la;}namespcae c{class ca;}}using a::ia;//inline可以一层namespace a{namespace b{cl...
2018-04-19 23:28:56 114
原创 4月15日到17日学习心得二
17.4随机数 注意计算机程序中给出的都是伪随机数。c++中不再像C一样使用rand()而是引擎+分布。default_random_engine e;for(size_t i=00;i<10;++i)cout<<e()<<endl;标准库中其实有多个引擎,最常用的就是default_random_engine.其常用操作有:e.seed();//指定种子e.m...
2018-04-19 17:10:59 145
原创 3月17-21日学习笔记
这几天主要是学习了第十二章,动态内存操作。总得来说从原理上来说并不困难,但map set 与shared_ptr的结合使用是一大难点,我并没有完全掌握,尤其要重看12.3感受单词搜索程序中map<string,shared_ptr<set<int>>>利用map的随机访问功能,实现单词,行数,次数的完美动态结合。...
2018-04-19 15:47:20 83
原创 4月15-18日学习心得
这几天主要是学习了第十六章标准库特殊设施,有些在短期内可能很难用到如正则表达式,底层IO操作等等。17.1tuple类型tuple是类似pair的模板。可以把tuple看做一个“快速而随意”的数据结构。tuple<size_t, size_t, size_t> threeD; auto item = make_tuple("3223", 3, 43.0);//item是tup...
2018-04-19 15:46:58 151
原创 4月14日学习心得
今天结束了第十六章的学习16.4可变参数模板 一个可变参数模板就是一个接受可变数目的模板函数或模板类。可变数目的参数称为参数包。存在两种参数包:模板参数包,表示零或多个模板参数,函数参数包,表示零或多个函数参数。template <typename T, typename... Args>void foo(const T&t,const Args& ...rest)...
2018-04-14 23:04:07 178
原创 4月8-13日心得2
16.2模板实参推断16.2.1类型转换与模板类型参数 对于函数模板,编译器利用调用中的函数实参来确定其模板参数。从函数实参来确定模板实参的过程称模板实参推断。如果一个函数形参的类型使用了模板类型参数,那么它采用特殊的初始化规则。能在调用中应用于函数模板的包括如下两项:1.const转换:可以将一个非const对象的引用(或指针)传递给一个const对象的引用(或指针)形参2.数组或函数指针...
2018-04-13 22:43:06 79
原创 4月10-14日学习心得1
这几天进入了第十六章模板和泛型编程的学习。C++中两个最关键的思想即OOP和泛型编程。泛型编程 使得模板和函数的通用性大大增加,提高效率。 16.1.1 首先定义一个通用的模板函数,而不是为每个类型都定义一个新函数。template <typename T>int compare(const T& v1, const T& v2){ if (v1 <...
2018-04-13 22:17:14 90
原创 4月5日到7日学习心得
这三天主要是学习了15.5-15.7。15.5 我们一定要明确基类成员对其派生类是否可访问。在此深入理解proteced:1.和私有成员类似,受保护成员对于类的用户来说是不可访问的。2.和公有成员类似,受保护成员对于类的成员和友员是可访问的。3.派生类的成员或友元只能通过派生类对象来访问其受保护成员。派生类对于一个基类对象中的受保护成员没有任何访问特权。 一定注意派生类的继承列表中的访问运...
2018-04-07 23:15:10 102
原创 4月2-4日学习心得
这三天主要是开始学习非常重要的第15章:面向对象程序设计。 15.1 这一节是面向对象编程(object oriented program OOP)概述。OOP中有三个最重要的概念:数据抽象(ADT)继承(inheriance),和动态绑定(dynamic binding)。继承是通过基类和派生类构成的层次关系。如果有成员函数需要传递下去需要将它在基类里声明为虚函数(virtual fun...
2018-04-05 17:22:38 164
原创 4月1日学习心得
今天主要是学习了14.8函数调用运算符。函数调用运算符必须是成员函数。下面是一个例子class PrintString {public: PrintString(ostream &o = cout, char c = ' ') : os(o), sep(c) {} void operator()(const string &s)const { os <<...
2018-04-01 23:45:11 105
原创 3月30及31日学习心得
这两天主要学习了14.1-14.7,即重载运算符的操作。大体来说几乎所有运算符都可以重载,不能被重载的运算符有:: .* . ? :通常情况不重载的运算符有:逗号,取地址,逻辑与和逻辑或。确定到底是函数实现,还是运算符实现的原则是:只有当操作的含义对于用户来说清晰明了时才可以使用运算符。如果用户对运算符可能有几种不同的理解,则使用这样的运算符将产生二义性。下面的准则我将有助于我们在将运算符定义为成...
2018-04-01 00:19:26 135
原创 3月27-29日学习心得
这几天主要学习了13.6 对象拷贝。第一个关键的概念是右值引用,右值表明一种特定的值而不是名称,如3,5等。左值持久,右值短暂。用&&表示右值引用,使用std::move()将左值转化为右值引用。int &&r1=3;int &&r2=r1;//wrong,r1 is left value nowint &&r3=std::m...
2018-03-29 23:59:28 105
原创 3月26日学习心得
今天,主要是学习了13.5.这一节主要是帮助理解vector的构造方式,尤其注意allocator的使用。下面是代码:class StrVec{ public: StrVec(): elements(nullptr),first_free(nullptr),cap(nullptr){ } StrVec(initializer_list<string> sl) {...
2018-03-27 00:00:11 116
原创 3月25日学习总结
今天,主要是学习13.4,通过一个示例,演练拷贝控制。最终成功的创建了message和folder类,特别注意set和map在作为集合领域的优越性。下面是示例代码:class Message;class Folder{friend class Message; public: Folder()=default; Folder(Message& m,string str)...
2018-03-26 00:05:04 116
原创 3月24日学习心得
今天,主要是继续学习拷贝控制。在昨天的三/五法则之后,首先是知道使用=default是用合成版本的函数。之后,要明确我们定义的拷贝构造函数或者拷贝赋值运算符有些时候是要阻止拷贝的。在两者后=default即使得定义存在,但之后无法调用,从而实现删除函数。e.g.struct nocopy{ public: nocopy(){ cout<<"nocopy constructed...
2018-03-24 23:59:44 116
原创 3月10-17日学习总结
这一周忙这单片机项目忘了写总结,今天就来总结一下。首先是10.4,对迭代器的再探。三种插入迭代器,可以很好的解决泛型算法不能改变元素个数的问题。 back_inserter(v); inserter(iterator,v); front_inserter(v);io迭代器可以很好的对流中的元素进行操作,istringstream::iterator iter(str);操作改迭代...
2018-03-17 23:48:27 83
原创 3月7~9日学习心得
这三天主要是学习10.3定制操作,主要是算法中谓词形参的使用。lambda 表达式:[capture list](parameters)->functype{ };要注意lambda表达式中可以无捕获列表,可以无参数,可以无尾指函数返回类型。如果只有return 将根据返回值决定类型,但如果有非return 语句那么,将默认返回void.三大sort:sort(b,e,p);//如果没有谓...
2018-03-09 23:03:48 130
原创 3.5学习总结
今天进入了第十章 泛型算法的学习。所谓泛型,就是指其运用范围广,容器和内置数组都可以使用。其被包括在<algorithm>中,<numeric>也有部分。算法不依赖于容器,但依赖于元素的操作。算法的真正对象是迭代器,不会改变容器大小。只读算法: accumulate(b,e,sum);(+) find(b,e,val); equal(r1.b,r1.e,r2.b)...
2018-03-05 23:43:01 99
原创 3月4日学习总结
今主要学习了string容器的操作,包括string的构造. 在六种顺序容器的构造的基础上,又增加string s(cp,n),string s(s2,pos2),string s(s2,pos2,len2),s.substr()共十种操作。 append()和replace()函数,string的搜索:s.(r)find(arg),s.find_first(last)_(not)_of(...
2018-03-04 13:04:30 121
原创 3月2日和3月3日C++学习心得
这两天主要学习的是9.3,9.4,9.6。在顺序容器操作中,有以下几种: 添加:push_back(),push_front(),insert(iterator,n),emplace(). 访问:front(),back(),c[n],c.at[n]引用。 删除:pop_back( ),pop_front( ),erase( ),clear( ). ...
2018-03-04 00:40:45 119
原创 2018.3.1 C++学习总结
9.1和9.2主要学习了顺序容器:vector,deque,list,array等,以及其迭代器,和其类型referenece,const_reference,value_type,使用array时必须同时指定其元素类型和大小,如:array<int,40>.六种初始化方式,默认,列表,拷贝,迭代器(可以实现不同容器类型和元素类型的转换),顺序(大小),顺序(大小,元素值)。利用C1....
2018-03-01 13:51:58 100
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人