C++
文章平均质量分 52
c++
UniversityGrass
这个作者很懒,什么都没留下…
展开
-
C++ leetcode note
c++ leetcode note原创 2022-11-12 05:49:28 · 252 阅读 · 0 评论 -
C++ iteration and reverse iteration
pt!原创 2022-10-28 10:39:03 · 359 阅读 · 0 评论 -
C++ initialization of vector
https://www.geeksforgeeks.org/initialize-a-vector-in-cpp-different-ways/Create a 2D vector of 5x3 matrix:vector dp (5, vector (3,0))原创 2022-10-25 11:58:54 · 913 阅读 · 0 评论 -
继承关系
通过子类对象调用父类有而子类没有的函数时,若该函数中调用了父类和子类共有的成员变量或成员非虚函数,则使用的是父类的,但是若在该函数中调用的是父类和子类共有的虚函数,则调用的是子类的虚函数,且上述均和加不加this指针没有关系。注意,此时我也没有用基类的指针指向子类对象,而是直接通过子类对象调用父类函数。使用基类指针指向子类对象后,若用指针调用父类子类共有的成员变量或成员非虚函数,调用的是父类的。#include <iostream>using namespace std;class f原创 2020-08-22 07:04:28 · 163 阅读 · 0 评论 -
算法
#include<algorithm>算法可以直接用函数名调用,而不一定要用类名.函数名的方式。STL算法分类STL中的算法大致可以分为以下七类:• 不变序列算法• 变值算法• 删除算法• 变序算法• 排序算法• 有序区间算法• 数值算法大多重载的算法都是有两个版本的• 用 “==” 判断元素是否相等, 或用 “<” 来比较大小• 多出一个类型参数 “...原创 2020-03-22 14:12:26 · 335 阅读 · 0 评论 -
Copy算法与ostream_iterator结合可以用于输出某个容器的元素
Copy算法与ostream_iterator结合可以用于输出某个容器的元素copy 函数模板(算法)template<class InIt, class OutIt>OutIt copy(InIt first, InIt last, OutIt x);本函数对每个在区间[0, last - first)中的N执行一次*(x+N) = *(first + N), 返回 x ...原创 2020-03-22 13:54:37 · 260 阅读 · 0 评论 -
容器适配器
可以用某种顺序容器来实现(让已有的顺序容器以栈/队列的方式工作)stack: 头文件 • 栈 – 后进先出queue: 头文件 • 队列 – 先进先出priority_queue: 头文件 • 优先级队列 – 最高优先级元素总是第一个出列都有3个成员函数:• push: 添加一个元素;• top: 返回栈顶部或队头元素的引用• pop: 删除一个元素容器适配器上没有迭代...原创 2020-03-22 07:06:21 · 131 阅读 · 0 评论 -
关联容器
set, multiset, map, multimap 内部元素有序排列,新元素插入的位置取决于它的值,查找速度快,是log(N)。 除了各容器都有的函数外,还支持以下成员函数:find: 查找等于某个值 的元素(x小于y和y小于x同时不成立即为相等)lower_bound : 查找某个下界upper_bound : 查找某个上界equal_range : 同时查找上界和下界c...原创 2020-03-21 13:56:31 · 87 阅读 · 0 评论 -
multimap
multimaptemplate<class Key, class T, class Pred = less<Key>,class A = allocator<T> >class multimap {….typedef pair<const Key, T> value_type;…….}; //Key 代表关键字的类型 multi...原创 2020-03-21 13:55:36 · 121 阅读 · 0 评论 -
类的内部也可以定义类
class CStudent {public:struct CInfo //类的内部还可以定义类 {int id;string name;};int score;CInfo info; //学生的其他信息};原创 2020-03-21 13:55:09 · 876 阅读 · 0 评论 -
typedef
typedef是给类名起个别名,主要用于类模板:typedef multimap<int,double,less<int> > mmid;原创 2020-03-21 13:54:34 · 69 阅读 · 0 评论 -
流运算符可以在类的定义外直接重载
流运算符不是只能在类内部进行重载,也可以直接重载:#include <iostream>#include <map>using namespace std;template <class Key,class Value>ostream & operator <<( ostream & o, const pair<Key...原创 2020-03-21 13:53:08 · 296 阅读 · 0 评论 -
multiset
set, multiset, map, multimap 内部元素有序排列,新元素插入的位置取决于它的值,查找速度快。 除了各容器都有的函数外,还支持以下成员函数:find: 查找等于某个值 的元素(x小于y和y小于x同时不成立即为相等)lower_bound : 查找某个下界upper_bound : 查找某个上界equal_range : 同时查找上界和下界count :计算...原创 2020-03-21 02:00:45 · 202 阅读 · 0 评论 -
函数对象
若一个类重载了运算符 “()”,则该类的对象就成为函数对象。class CMyAverage { //函数对象类public:double operator() ( int a1, int a2, int a3 ) {return (double)(a1 + a2+a3) / 3;}};CMyAverage average; //函数对象cout << average(...原创 2020-03-20 02:23:26 · 118 阅读 · 0 评论 -
deque容器
双向队列必须包含头文件 #include 所有适用于vector的操作 都适用于dequedeque还有 push_front (将元素插入到容器的头部)和 pop_front (删除头部的元素) 操作...原创 2020-03-15 10:12:27 · 75 阅读 · 0 评论 -
list容器
双向链表 #include 在任何位置插入/删除都是常数时间不支持根据下标随机存取元素具有所有顺序容器都有的成员函数除此之外,还支持8个成员函数:list1.merge(list2),list2会被清空,list1变成合并后的链表。sort函数list容器的迭代器不支持完全随机访问不能用标准库中sort函数对它进行排序list自己的sort成员函数list<T&g...原创 2020-03-15 10:10:36 · 168 阅读 · 0 评论 -
Vector
可变长的动态数组必须包含头文件 #include 支持 随机访问迭代器• 根据下标随机访问某个元素时间为常数• 在尾部添加速度很快• 在中间插入慢所有STL算法 都能对vector操作vector的成员函数构造函数初始化vector(iterator first, iterator last)的参数既可以是容器的iterator,也可以是数组的指针,数组的last可以指向数组...原创 2020-03-15 03:15:24 · 94 阅读 · 0 评论 -
算法
算法就是一个个函数模板, 大多数在 中定义 STL中提供能在各种容器中通用的算法,比如查找,排序等 算法通过迭代器来操纵容器中的元素。许多算法可以对容器中的一个局部区间进行操作,因此需要两个参数,一个是起始元素的迭代器,一个是终止元素的后面一个元素的迭代器。比如,排序和查找 有的算法返回一个迭代器。比如 find() 算法,在容器中查找一个元素,并返回一个指向该元素的迭代器...原创 2020-03-13 14:19:30 · 89 阅读 · 0 评论 -
迭代器
迭代器 用于指向顺序容器和关联容器中的元素 迭代器用法和指针类似 有const 和非 const两种 通过迭代器可以读取它指向的元素 通过非const迭代器还能修改其指向的元素定义一个容器类的迭代器的方法可以是:容器类名::iterator 变量名;或:容器类名::const_iterator 变量名;访问一个迭代器指向的元素:* 迭代器变量名迭代器上可以执...原创 2020-03-13 13:58:37 · 134 阅读 · 0 评论 -
容器
容器可以用于存放各种类型的数据(基本类型的变量,对象等)的数据结构,都是类模版,分为三种:1)顺序容器vector, deque,list2)关联容器set, multiset, map, multimap3)容器适配器stack, queue, priority_queue对象被插入容器中时,被插入的是对象的一个复制品。许多算法,比如排序,查找,要求对容器中的元素进行比较,有...原创 2020-03-13 13:57:45 · 128 阅读 · 0 评论 -
标准模板库STL
泛型程序设计简单地说就是使用模板的程序设计法。将一些常用的数据结构(比如链表,数组,二叉树)和算法(比如排序,查找)写成模板,以后则不论数据结构里放的是什么对象,算法针对什么样的对象,则都不必重新实现数据结构,重新编写算法。标准模板库 (Standard Template Library) 就是一些常用数据结构和算法的模板的集合。有了STL,不必再写大多的标准数据结构和算法,并且...原创 2020-03-10 00:24:21 · 109 阅读 · 1 评论 -
cin
cincin>>cout<<像是水从上往下流。cin可以连续从键盘读取想要的数据,以空格、tab或换行作为分隔符cin遇到分隔符(可以是换行符等默认的,也可以是自定义的诸如逗号)即停止,但不删除分隔符,如果继续读取仍会读到分隔符。不过cin对每次读取时读到的前置换行符和空格会忽略(遇到分隔符算完成一次读取)。cin可读取字符串。cin.getlinecin....转载 2020-03-06 00:02:32 · 585 阅读 · 0 评论 -
强制转换运算符和类型强制转换运算符
强制转换运算符 char b = 'a'; cout << (int)b << endl;类型强制转换运算符在 C++ 中,类型的名字(包括类的名字)本身也是一种运算符,即类型强制转换运算符。类型强制转换运算符是单目运算符,也可以被重载,但只能重载为成员函数,不能重载为全局函数。经过适当重载后,(类型名)对象这个对对象进行强制类型转换的表达式就等价于对象.ope...转载 2020-03-05 23:53:25 · 1491 阅读 · 1 评论 -
字符串数组或string
字符串数组const char*字符串只能赋值给const char*变量,不能赋给char *变量。 const char* a = "abcde";程序自动在字符串数组的末尾加’\0’。对于上述程序,a[5]是’\0’,输出为空,a[5]之后的也可以索引到,输出的话也是单个字符,但是就不确定是什么字符了。可以使用strlen()来求字符串长度。长度是不包含末尾’\0’的。 cou...原创 2020-03-05 23:39:31 · 310 阅读 · 0 评论 -
数组类型
对于不是作为函数形参的数组,数组类型为:typeid(a).name()#include<iostream>#include <typeinfo.h>using namespace std;int main() { int a[5] = { 0,1,2 }; cout << typeid(a).name() << endl; ...原创 2020-03-05 18:33:01 · 99 阅读 · 0 评论 -
获取数组长度
#include<iostream>using namespace std;template<class T>int length(T& arr){ return sizeof(arr) / sizeof(arr[0]);}int main(){ int arr[] = { 1,5,9,10,9,2 }; // 方法一 ...转载 2020-03-05 18:27:32 · 888 阅读 · 0 评论 -
C++获取变量的类型
typeid(a).name()a是变量名称。原创 2020-03-05 18:03:18 · 446 阅读 · 0 评论 -
函数参数为数组
一维数组函数定义函数定义时有四种方式:方式一:void testfunc(int a[], int size)方式二:void testfunc(int* a, int size)方式三:void testfunc(int a[10], int size)方式四:template<class T>void testfunc(T a, int size)方...原创 2020-03-05 18:02:09 · 6408 阅读 · 0 评论 -
C++命令行参数
命令行运行exe文件时,若代码里在main函数的参数中写了argc和argv,就可以传入参数,一般传的都是字符串参数。main函数主要有以下两种写法:int main(int argc, char** argv)int main(int argc, char* argv[])命令行中可这么写:test.exe hello worldargc不用传,自动识别有多少个参数,文件名也算一个...原创 2020-03-05 17:07:57 · 1027 阅读 · 0 评论 -
构造函数的调用顺序
多重继承中,构造函数的初始化时,先调用虚基类的,再按照继承时所写的顺序依次调用构造函数,与初始化列表中的顺序无关。只要直接或间接继承了虚基类,而且虚基类是含有参数的,就要在构造函数的初始化列表中初始化虚基类;如果参数是可缺省的,或没有参数,则不一定要在初始化列表中写虚基类。没有直接或间接继承了虚基类的,可以只在构造函数的初始化列表中写父类的含参构造函数。...原创 2020-03-04 23:27:00 · 523 阅读 · 0 评论 -
虚基类
添加链接描述添加链接描述转载 2020-03-04 23:21:21 · 134 阅读 · 0 评论 -
sizeof
sizeof看收藏父类的private成员变量的大小也包括在子类的大小里转载 2020-03-04 22:58:43 · 61 阅读 · 0 评论 -
32位和64位区别
二者的不同主要是在寻址空间、指令集上。64位计算机能同时处理64bit数据,也就能寻址2^64的空间,能处理64位的指令。原创 2020-03-04 21:57:59 · 103 阅读 · 0 评论 -
数字后加L
数字后加不加L,都可以赋值给long,long long或者int型变量。原创 2020-03-04 18:51:54 · 922 阅读 · 0 评论 -
各数据类型的字节数、最大最小值
windows的C++中:原创 2020-03-04 18:20:52 · 857 阅读 · 0 评论 -
C++基础
水平制表符水平制表符:\t.跳到下一个制表位。原创 2020-03-04 18:16:28 · 122 阅读 · 0 评论 -
输入和输出
模板#include <iostream >using namespace std;int main() {int x;char buf[100];cin >> x;cin.getline(buf,90,',');cout << buf << endl;cerr << buf << endl;clog &l...原创 2020-03-04 11:41:11 · 370 阅读 · 0 评论 -
string类
string 类 是一个模板类, 它的定义如下:typedef basic_string<char> string;使用string类要包含头文件 string对象的初始化:• string s1("Hello"); // 一个参数的构造函数• string s2(8, ‘x’); // 两个参数的构造函数• string month = “March”; 不提供以字...原创 2020-03-03 19:34:28 · 179 阅读 · 0 评论 -
类模板
类模板类模板• 在定义类的时候给它一个/多个参数• 这个/些参数表示不同的数据类型在调用类模板时, 指定参数, 由编译系统根据参数提供的数据类型自动产生相应的模板类C++的类模板的写法如下:template <类型参数表>class 类模板名{成员函数和成员变量};类型参数表的写法就是:class 类型参数1, class 类型参数2, …类模板里的成员函数...原创 2020-03-03 18:27:32 · 183 阅读 · 0 评论 -
函数模板
泛型程序设计(Generic Programming)算法实现时不指定具体要操作的数据的类型泛型 — 算法实现一遍 适用于多种数据结构优势: 减少重复代码的编写大量编写模板, 使用模板的程序设计• 函数模板• 类模板函数模板template<class 类型参数1, class 类型参数2, … >返回值类型 模板名 (形参表){函数体}函数模板中可以有...原创 2020-03-03 18:13:10 · 71 阅读 · 0 评论