c++
文章平均质量分 58
Zom_b
这个作者很懒,什么都没留下…
展开
-
n皇后问题
N皇后问题通过递归回溯来实现n皇后的摆放位置,下面是自己实现的代码,思路写在代码注释里,可以详细看看代码。class Solution {public: //标记mark数组 void remark(int x,int y,vector<vector<int>> &mark) { if(x >= mark.size() || y >= mark.size()) { retur原创 2021-05-14 15:44:27 · 171 阅读 · 0 评论 -
多端安全协议传输平台
项目简介 在学习完c++,系统编程等基础内容以后,就在网上找了关于c++方面的项目,下面这个项目是练手项目之一,一个C/S模型的全栈项目,关于源代码和项目的简介网上不难找到,这里讲述一些我对该项目的理解,和对项目的改进、代码的优化。 该项目名为多端安全协议传输平台,它主要是提供为其他通信或者服务提供第三方服务,即保证甲方通信的安全传输。 该项目主要实现第三方传输平台客户端和服务端之间如何进行秘钥协商,以及第三方平台对数据信息的注册等。协商完的秘钥能够提供给甲方进行数据加密,甲方只需要一个外联接口原创 2021-03-15 11:26:05 · 897 阅读 · 0 评论 -
string容器
string容器 在c++中,字符串可以通过类来表示,也便是string容器,它本质上是通过一个类封装了char*指针,然后通过其内部的一些成员函数,能过对该字符串进行一些操作。 它具有以下特性:string是一个类,它封装了一个char*指针,然后可以通过内部成员函数,操作该指针指向的字符串string管理char*所分配的内存,每一次string的赋值,都不用担心赋值越界和取值越界at()访问和[]不同,at越界能够抛出异常。s.at(i)和s[i]的区别在于s.at(i)若越界会抛出原创 2020-12-09 22:33:07 · 133 阅读 · 0 评论 -
vector容器
vector容器 向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。 vector容器的概念图: 从上图中可以看出,vector是一个单端动态数组,只能从尾部往后定增/删除,不能从头部往前递增/删除。但可以从数组的中间插入数据(可间接实现头插/删)函数的使用构造函数vector(v.begin(),v.end());//将v[begin(原创 2020-12-09 22:17:21 · 112 阅读 · 0 评论 -
STL基础知识
STL基础知识 STL的全称是,standard template library,中文译名为标准模板库,其包含有大量的模板类和模板函数,是 C++ 提供的一个基础模板的集合,用于完成诸如输入/输出、数学计算等功能。它位于各个 C++ 的头文件中,即它并非以二进制代码的形式提供,而是以源代码的形式提供 。 在C++中,STL具体指:容器、算法和迭代器,它借助模板把常用的数据结构及其算法都实现了一遍,并且做到了数据结构和算法的分离特性STL具有以下特性:它将容器和算法之间通过迭代器进行无缝连接原创 2020-12-09 21:59:56 · 309 阅读 · 0 评论 -
异常处理
异常 异常处理允许用户以一种有序的方式管理运行是出现的错误。使用C++的异常处理,用户程序在错误发生时可自动调用一个错误处理程序。异常处理最主要的优点是自动转向错误处理代码,而以前在大程序中这些代码是由“手工”编制的。 简单来说异常,是利用代码来代替程序员调试解决程序的出错异常的优点函数的返回值可以忽略,但异常不可忽略。如果程序出现异常,但是没有被捕获,程序就会终止,这多少会促使程序员开发出来的程序更加健壮。而如果没有使用C语言的error宏或者函数返回值,调试者都有可能忘记检查,从而没有对错原创 2020-12-09 20:48:37 · 202 阅读 · 1 评论 -
类型转换
类型转换 c++通过模板类提供了4中类型转换操作符来应对不同场景static_cast一般转换dynamic_cast通常在积累和派生类之间转换使用const_cast主要针对const的转换reinterpret_cast用于进行没有任何关联之间的转换,比如一个字符指针转换为一个整形数(1)static_cast 它用于非多态类型的转换(静态转换),对应于C中的隐式类型转换,但他不能用于两个不相关类型的转换,如整形和整形指针之间的转换,虽然二者都是四个原创 2020-12-09 17:40:45 · 139 阅读 · 0 评论 -
函数模板和类模板
函数模板和类模板模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。每个容器都有一个单一的定义,比如 向量,我们可以定义许多不同类型的向量,比如 vector 或 vector 函数模板模板语法:在创建模板函数或者模板类时,我们需要在前面加上这一句template<typename T>//或者template<class T>templ原创 2020-12-09 17:27:08 · 678 阅读 · 0 评论 -
多态的注意事项
多态多态的定义: 如果有几个似而不完全相同的对象,有时人们要求在向它们发出同一个消息时,它们的反应各不相同,分别执行不同的操作。这种情况就是多态现象。 c++中所谓的多态是指,由继承而产生的相关的不同的类,其对象对同一消息会作出不同的相应。 多态性是面向对象程序设计的一个重要特征,能增加程序的灵活性。可以减轻系统,升级,维护,调试的工作量和复杂度多态使用注意事项(1)多态的发生有三个必要条件:要有继承要有虚函数重写父类指针或引用指向子类对象(2)如果传参是父类指针,又没有使用v原创 2020-12-09 15:58:27 · 404 阅读 · 0 评论 -
关于c++继承的一些问题
继承 继承是面向对象软件技术当中的一个概念,与多态、封装共为面向对象的三个基本特征。继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。 被继承的类称为基类或者是父类;继承的类被称为子类或者是派生类。继承方式 继承方式分为三类:公有继承、保护继承、私有继承。三类继承的不同之处,是改变继承成员数据的访问权限公有继承:原来的成员数据访问权限不变保护继承:原来成员数据访问权限private不变;public、protected都变为protected。私有继承:原来成员数据访原创 2020-12-08 23:16:07 · 257 阅读 · 0 评论 -
c++重载常见问题
重载 C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载 。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。 其次,不会根据返回值不同进行重载函数重载//返回值相同或类似,名字相同;参数列表不同,定义不同void print(int i) { cout << "整数为: " << i << endl;}void print(double f)原创 2020-12-08 00:11:17 · 802 阅读 · 0 评论 -
友元函数的易错点
友元函数 类的友元函数定义在类的外部,虽然它并非成员函数,但通过friend的声明能够使它访问类的私有成员class Integer{public: friend void test(Integer& i);//友元函数声明,位置可以随意,必须在类内private: int val;};void test(Integer &i){ cout<<i.val<<endl;//可以直接访问Integer的私有成员} 如果一个原创 2020-12-07 21:58:13 · 333 阅读 · 1 评论 -
全面了解static
static static是c/c++中的一个关键字,可以是一个变量、函数的修饰符,被其修饰的变量或者函数将变成静态变量或静态函数。 static 关键字能够在不破坏了此变量的访问范围下,将此范围内变量的值保存至下一次调用。在 C++ 中,需要一个数据对象为整个类而非某个对象服务,同时又力求不破坏类的封装性,即要求此成员隐藏在类的内部,对外不可见时,可将其定义为静态数据。局部变量 当static修饰一个局部变量的时候,即使在声明时未赋初值,编译器也会把它初始化为0。且静态局部变量存储于进程的全原创 2020-12-07 21:15:37 · 77 阅读 · 0 评论 -
深入new和delete
new和delete1.前言 new和delete是c++在c语言特性上的拓展,功能上与c语言的malloc和free类似,但具体功能上略微有些不同。1.malloc和freemalloc: c语言中的malloc()是个函数,函数原型是:void* malloc(unsigned int size) 。 它能够动态的从堆里申请内存,具体实现是交给操作系统来实现的。函数返回的指针是指向堆里面的一块内存。操作系统中有一个记录空闲内存地址的链表。当操作系统收到程序的申请时,就会遍历该链表,然后原创 2020-12-07 20:36:01 · 148 阅读 · 0 评论 -
c++命名空间的使用
命名空间 c++中,名称可以是符号常量、变量、宏、函数等。为了避免在大规模程序的设计中,以及在程序员使用各种各样的c++库时,这些标识符的命名发生冲突。标准c++引入了关键字namespace(命名空间),能够更好地控制标识符的作用域。 此外,std是c++标准命名空间,c++标准程序库中的所有标识符都被定义在std中,比如标准库中的类iostream、vector等都定义在该命名空间中,使用时要加上声明using namespace std,或者using指示(std::string、std::v原创 2020-12-07 12:15:58 · 291 阅读 · 1 评论