c++
文章平均质量分 92
c++知识点专栏
孤サ月
虚心接受任何指正、教导和批评(包括但不限于知识内容,覆盖范围等)
展开
-
stl_list
list文档介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。原创 2024-04-23 09:03:21 · 789 阅读 · 0 评论 -
模板(二)
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式【优点】模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生增强了代码的灵活性【缺陷】模板会导致代码膨胀问题,也会导致编译时间变长出现模板编译错误时,错误信息非常凌乱,不易定位错误。原创 2024-04-20 09:30:09 · 1266 阅读 · 0 评论 -
c++多态
多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象买票半价。那么在继承中要构成多态还有两个条件:必须通过基类的指针或者引用调用虚函数被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写。原创 2024-04-19 09:43:18 · 138 阅读 · 0 评论 -
c++继承
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用public:protected:protected:int _stuid;s.Print();return 0;原创 2024-04-17 12:11:23 · 709 阅读 · 0 评论 -
stack类介绍
stack介绍文档翻译:stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。empty:判空操作back:获取尾部元素操作push_back:尾部插入元素操作pop_back:尾部删除元素操作。原创 2024-04-12 04:15:00 · 563 阅读 · 0 评论 -
list介绍及使用
list文档介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。原创 2024-04-09 04:00:00 · 877 阅读 · 0 评论 -
vector类(二)
声明和定义均在头文件(自己创建的vector.h中进行,主函数仅调用函数。首先自定义构造vector类的默认成员变量和函数。原创 2024-03-29 05:00:00 · 683 阅读 · 0 评论 -
vector类(一)
vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小。为了增加存储空间,其做法是,分配一个新的数组,然后将全部元素移到这个数组。原创 2024-03-28 05:00:00 · 1079 阅读 · 0 评论 -
String类(三)
声明和定义均在头文件(自己创建的string.h)中进行,主函数仅调用函数。此时如果需要进行字符串复制拷贝,便需要进行构造拷贝函数。首先自定义构造string类的默认成员变量和函数。赋值不止有这种,当然还有**=**号进行赋值拷贝。原创 2024-03-27 06:00:00 · 617 阅读 · 0 评论 -
模板(一)
class 类模板名// 类内成员定义class Vector // 注意:Vector不是具体的类,是编译器根据被实例化的类型生成具体类的模具public:, _size(0){}~Vector();//使用析构函数演示:在类中声明,在类外定义。template // 注意:类模板中函数放在类外进行定义时,需要加模板参数列表。原创 2024-03-26 14:11:10 · 894 阅读 · 0 评论 -
string类(二)
区别:与push_back的不同就在于push_back添加的是一个字符,而append添加的是字符串。 此值在字符串的成员函数中用作 len(或 sublen)参数的值时,表示“直到字符串的末尾”。它可以等于或更大,额外的空间允许对象在向字符串添加新字符时优化其操作。功能(pos):NPOS是一个静态成员常量值,对于类型为 size_t的元素具有最大可能值。功能:检测字符串释放为空串,是返回true(1),否则返回false(0)。功能:擦除字符串的内容,该字符串将成为空字符串(长度为 0个字符)原创 2024-03-23 08:52:10 · 1129 阅读 · 0 评论 -
String类(一)
string是表示字符串的字符串类该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。string在底层实际是:basic_string模板类的别名,typedef basic_string string;不能操作多字节或者变长字符的序列。原创 2024-03-23 07:00:00 · 1740 阅读 · 0 评论 -
STL简介
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。原创 2024-03-23 07:00:00 · 968 阅读 · 0 评论 -
c++内存管理
new/delete和最大区别是 :new/delete对于自定义类型除了开空间还会调用构造函数和析构函数。delete p2;free(p3);delete p4;free(p5);return 0;注意:在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与free不会。new的原理。原创 2024-03-22 07:00:00 · 1610 阅读 · 0 评论 -
c++类和对象(三)
的。原创 2024-03-20 07:00:00 · 1772 阅读 · 1 评论 -
c++类和对象(二)
内置类型就是语言提供的数据类型,如:int/char…,自定义类型就是我们使用class/struct/union等自己定义的类型。原创 2024-03-19 07:00:00 · 1850 阅读 · 1 评论 -
c++类和对象(一)
/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。1.声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。2.类声明放在**.h文件中,成员函数定义放在一般情况下,更期望采用第二种方式!!!// 我们看看这个函数,是不是很僵硬?原创 2024-03-18 11:07:12 · 1038 阅读 · 1 评论 -
c++入门(汇总)
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对**{}**即可,{}中即为命名空间的成员。return x+y;并且 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。如果在一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中在早期C/C++中auto的含义是:使用auto。原创 2024-03-13 08:00:00 · 999 阅读 · 1 评论 -
c++入门(二)
在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量**,但遗憾的是一直没有人去使用它。**C++11中,标准委员会赋予了auto全新的含义即:**auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,**auto声明的变量必须由编译器在编译时期推导而得。return 10;auto b = a;原创 2024-03-12 11:50:15 · 785 阅读 · 1 评论 -
c++入门(一)
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对**{}**即可,{}中即为命名空间的成员。return x+y;并且 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。如果在一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。原创 2024-03-11 17:13:13 · 573 阅读 · 1 评论