500 words
STL介绍什么是STLSTL的全拼是standard template libaray(标准模板库),这是C++标准库中的重要组成,是一个数据结构与算法的基本框架 STL其实可以看作一个标准,他对各种数据结构、算法等内容做了功能上的限定,因此不同的人在实现相同的部分可能会有不同的实现方式,也就产生了不同的STL版本 SGI版本的STL的可阅读性非常高,在学习过程中主要参考这个版本 string介绍string类的介绍string类是C++中的一个容器,对应的是C语言的字符串,而C语言对字符串的处理是使用字符数组的方法,相对来说比较繁琐和相对不安全,由此在C++引出了string类 STL中的string类string的构造函数 函数名称 功能 string() 构造空的string对象 string(const char* s) 用字符串构造string对象 string(size_t n, char c) n个字符c构造string对象 string(const string& s) 拷贝构造 string的容量操作 函数名称 功能 ...
2.9k words
Linux基本介绍Linux是一款类似于UNIX的操作系统,而Linux的全称也很有趣 Linux is not unix由于这款操作系统完全开源免费,就使得其安全性和可拓展性大大提高,产生了诸如 Debian Ubuntu CentOS 等众多衍生的操作系统都是基于Linux内核的,而且许多企业都会使用Linux作为自己的操作系统 Linux的基本指令ls 指令语法: ls [选项]目录或文件]功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息常用选项 : -a 列出目录下的所有文件,包括以 . 开头的隐含文件。 -d 将目录象文件一样显示,而不是显示其下的文件。 如: ls -d 指定目录 -i 输出文件的i 节点的索引信息。 如 ls -ai 指定文件 -k 以 k 字节的形式表示文件的大小。ls -alk 指定文件 -I 列出文件的详细信息。 -n 用数字的 UID,GID 代替名称。”*”表示可执行的普通文件;“/“表示目录;”@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类...
C++
582 words
模板泛型编程在实际应用中,经常需要对不同类型的变量进行相同的操作,虽然函数重载可以实现,但是有几个不好的地方 一是重载函数仅是类型不同,代码复用率较低,一旦有新类型出现,就需要重新写一遍函数 二是代码的可维护性降低,其中一个地方出错就导致所有的重载均出错 于是C++在3.0版本中提出了模板,也就是一种泛型编程,不具体限定数据类型 泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础 模板又分为函数模板和类模板 函数模板格式template<class T1, typename T2, …… ,typename Tn>返回值类型 函数名(参数列表){} 1234567template<class T>void swap(T& left, T& right){ T tmp = left; left = right; right = tmp;} 这里的class也可以用tpyename代替 原理在编译阶段,对于模板函数,编译器需要根据传入的实参类型来推演生成对应类型的函数来调用 函数模板的实例化我们...
396 words
C++ 内存管理方式C语言中的内存管理方式在C++中仍然可以继续使用,但是也有很多地方并不好用,例如栈的生成与销毁,用起来比较复杂,因此C++提出了自己的内存管理方式,通过new和delete来进行动态内存管理 new delete 操作内置类型123456789101112131415void fun(){ int* p1 = new int; // 这里直接申请一个int的空间 int* p2 = new int(10); // 这里申请一个int的空间并且初始化为 10 int* p3 = new int[10]; // 这里申请10个int的空间 delete p1; delete p2; delete[] p3;} 包括 malloc 和 free 这些申请与销毁空间的操作必须匹配起来使用,切忌混用 new delete 操作自定义类型1234567891011121314151617181920212223class A{public: A(int a = 0) :_a(a) { cout<<"A(in...
C++
5k words
面向过程与面向对象C语言是面向过程的,关注的是做一件事情的需要的步骤有哪些,通过一系列函数之间的调用配合来实现解决问题 例如打游戏,需要 拿出电脑,开机,联网,登录,进入游戏这几个步骤 C++是基于面向对象的,关注的是解决这一个问题参与的对象,依靠对象之间的交互来完成问题的解决 例如打游戏,对象就是电脑和人,对于电脑这个对象,内部可能有一些机理,比如联网,登录,对于人也有一些机理,例如肌肉运动之类的,这就类似于类中的函数 类C语言中的结构体只能定义变量,但是在C++中,结构体中还可以定义函数,那么其实对于C++来说结构体也是一个类,而在C++中更常用class表示真正的类 类的定义12345678class ClassName{ void fun() { } int a;};//注意分号 class为定义类的关键字,ClassName是类的名字,**{}是类的主体,之中是类的成员,包括成员变量和成员函数** 类的两种定义方式 声明和定义全都在类中定义,成员函数可能会被当成内联函数处理 123456789101112class stud...
C++
3.6k words
1. C++关键字C++共计63个关键字,其中c语言有32个 1234567891011asm do if return try continueauto double inline short typedef forbool dynamic_cast int signed typename throwbreak else long sizeof typeid publiccase enum mutable static union wchar_tcatch explicit namespace static_cast unsigned defaultchar export new struct using friendclass extern operator switch virtual registerconst false private template void trueconst_cast float protected this volatile whiledelete goto reinterpret_cast 2. 命名空间在C/C++中,变量、函数...
806 words
介绍栈栈是一种基础的数据结构,具有一些特定的性质,例如先进后出,压栈出栈等,对于这些性质,一般可以采用顺序表来实现,当然也可用链表 队列队列具有的性质是先进先出,队尾进,队头出,这很符合链表的特性,所以我们采用单链表来实现队列 实现栈头文件123456789101112131415161718192021222324252627282930313233#pragma once#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<memory.h>#include<stdbool.h>#include<assert.h>// 支持动态增长的栈typedef int STDataType;typedef struct Stack{ STDataType* a;// 这里采用顺序表的结构,也可以采用数组 int top; // 栈顶 int capacity; // 容量 }Stack;// 初始化栈 v...
691 words
双链表这里的双链表指带头循环双向链表 虽然数据结构本身比较复杂,但是增删查改比较方便,是一个比较独立的数据结构 头文件声明1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253#pragma once// 带头+双向+循环链表增删查改实现#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<memory.h>#include<stdbool.h>#include<math.h>//常见头文件包含typedef int LTDataType;typedef struct ListNode{ LTDataType data;//链表数据 struct ListNode* next;//指向下一个节点的指针 struct ListNo...