C++初阶
文章平均质量分 89
senjiaxi
这个作者很懒,什么都没留下…
展开
-
C++的菱形继承与虚拟继承
C++的继承中有一种复杂的继承方式,这就是菱形继承。菱形继承(1)什么是菱形继承?假设现在有四个类,分别是A、B、C、D四个类。如果B类和C类同时继承于A类,并且D类又同时继承于B类和C类,那么这四个类之间的关系就叫做菱形继承。可以用下面的图来表示。(2)菱形继承的问题菱形继承会存在两个问题,一个是数据冗余,另外一个是二义性。我用一段简单的代码来说明这两个问题:class A{public:int a;};class B:public A{public:int b;};c原创 2021-09-13 11:46:22 · 209 阅读 · 3 评论 -
C++总结
extern关键字的作用extern置于变量或函数前,用于标示变量或函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。它只要有两个作用:当它与“C”一起连用的时候,如:extern “C” void fun(int a,int b);则告诉编译器在编译fun这个函数时候按着C的规矩去翻译,而不是C++的(这与C++的重载有关,C++语言支持函数重载,C语言不支持函数重载,函数被C++编译器编译后在库中的名字与C语言的不同)当extern不与“C”在一起修饰变量或函数时,如.原创 2021-03-26 16:14:58 · 429 阅读 · 0 评论 -
优先级队列prority_queue
优先级队列:parent:left child: 2 * parent + 1 right child: 2 * parent + 2child:parent:(child - 1) / 2插入时先尾插list不支持随机访问, 不能作为优先级队列的底层容器优先级队列的默认容器: vector—>随机访问的效率高于双端队列比较规则---->仿函数类仿函数类----> 必须重载 返回值operator()(参数列表)数据的比较-----> 大于:支持 >,小于原创 2020-11-27 16:09:51 · 746 阅读 · 0 评论 -
list的实现以及list和vector的对比优缺点分析
list的介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。与其他的容器相比较来说,list在任意位置插入,删除的效率是O(1),效率较高list不支持随机访问,不支持operator[ ]的操作结构如下:list的使用基本和vector的接口差不多,少了[ ],下面附上练习时的代码:////void printList原创 2020-11-23 16:08:10 · 1381 阅读 · 0 评论 -
重学string类的方方面面
string—>字符数组(管理字符的数组)1.熟悉使用2.了解底层原理www.cplusplus.com 可以看到string的方方面面#include <iostream>#include <string>using namespace std;//int main(){// string s1;//无参// string s2("hello");//带参数// string s3(s2);//拷贝构造// string s4(10, 'a');//原创 2020-11-12 15:56:05 · 84 阅读 · 0 评论 -
泛型编程 <模板>
泛型编程使用模板, 编写跟类型无关的代码例如在一些函数和类的时候,针对不同类型需要写很多重复的代码(swap函数)类:比如我们想实现一个数据结构栈stack,stack的多个对象,st1存int,st2存double,等等。解决方案:1.函数模板templatevoid swap(T& a, T& b){…}2.类模板templateclass stack{private:T* _a;size_t size;size_t capacity;}模板的原理编译原创 2020-10-30 11:51:01 · 102 阅读 · 0 评论 -
有关static的方方面面(类和对象)
#include <iostream>using namespace std;//class Date{//public:// explicit Date(int year, int month, int day)// :_year(year)// {// cout << "Date (int year)" << endl;// }// Date(const Date& d){// cout << "Date(const D原创 2020-10-23 10:53:31 · 74 阅读 · 0 评论 -
C++STL—string类的模拟实现
namespace shen{class string{public:typedef char* iterator;//////////////////////////////////////////////////////////////// iteratoriterator begin(){return _str;}iterator end(){return _str + _size;} string(const char* str = ""){ _size = strl原创 2020-05-13 13:22:27 · 147 阅读 · 0 评论