
C++
文章平均质量分 63
C++
YXXYX
精通CV编程
展开
-
多态及其内部原理剖析
多态是面向对象编程三大特性之一,通过多态我们可以大大增强代码的复用性,也会使代码整体更紧凑简洁;多态可以分为静态多态和动态多态两类,静态多态就比如函数重载或者运算符重载;动态多态则是派生类和虚函数实现的运行时的多态;(地址软绑定它们就是因为在函数地址绑定时机不同所以有所区分动态:运行时确定函数地址;静态:编译时确定函数地址;实现多态需要满足两个条件:1、有继承关系2、子类重写父类中的虚函数(重写:函数返回值类型 函数名 参数列表 完全一致称为重写)有了这些,我们就可以使用多态了,使用原创 2021-07-25 23:42:22 · 259 阅读 · 0 评论 -
字符串函数实现(strlen,strcpy,strcmp,strcat,strrev)
声明:以下代码可能并非最佳方法,若有错误疑问欢迎提出!!!strlen函数#include<stdio.h>#include<string.h>int mylen(char *str){ int cnt=0; while(str[cnt]!='\0') cnt++; return cnt;}int main(){ char s[]="hello"; printf("%d\n",mylen(s)); printf("%d",strlen(s)); re原创 2021-04-23 18:40:47 · 157 阅读 · 0 评论 -
代码格式&&驼峰命名法
引言每个人写代码都有着自己的风格,但是这样一旦几个人一起写项目的时候就会出现各种各样的问题,所以统一格式的代码会看起来更舒服更规范,也能直观的体现出你的编码水平,下面我就以C++为例,讲一下基本的代码格式和驼峰命名法则这里代码格式是摘自Google部分内容和总结的内容,适用于学生日常的练习,平常练习培养好习惯,对以后工作会大有帮助;一些归类这里说一点是大括号和控制语句保持同一行的,这样可以缩短代码的行数,特别是项目中代码行数很多的情况下,这种写法是可以提高阅读代码的效率。例如while (n)原创 2021-08-03 00:02:31 · 1343 阅读 · 0 评论 -
C++中stoi(),atoi() ,to_string()使用技巧
引言stoi(),atoi() ,to_string 这三个函数都是对字符串处理的函数,前两者是将字符串转化为十进制 int 类型,最后一个是将十进制类型 int、double 等转化为string,下面就简单介绍一下;头文件都是:#include<cstring>stoi() 和 atoi()这两个功能虽然都是将字符串转化为 int 类型,但是还是有区别的,stoi 的参数是 const string* 类型atoi 的参数是 const char* 类型stoi() 会对转化后原创 2021-08-27 17:35:04 · 33860 阅读 · 8 评论 -
++i 和 i++ 效率分析(C++)
引言++i 和 i++ 在多数情况下产生的结果都一样,但是它们的效率如何呢?在C++中,它俩都用了运算符++的重载,这里执行效率上就有了些区别;先说结论++i 的效率比 i++ 的高,尤其在处理大量自定义类型的数据时会更明显;——————————————————————————————————————————————————————分析++i 的实现简单说就是加1后返回结果就行了;++的重载代码:class INT; INT &INT::operator++() {原创 2021-08-22 20:51:11 · 652 阅读 · 0 评论 -
C++中的 c_str() 函数
功能:c_str() 函数可以将 const string* 类型 转化为 cons char* 类型头文件:#include<cstring>c_str()就是将C++的string转化为C的字符串数组,c_str()生成一个const char *指针,指向字符串的首地址因为在c语言中没有string类型,必须通过string类对象的成员函数 c_str() 把 string 转换成c中的字符串样式注意点:c_str() 这个函数转换后返回的是一个临时指针,不能对其进行操作原创 2021-08-27 17:29:05 · 46595 阅读 · 4 评论 -
C++学习记录
封装C++和C语言最大的不同就是面向对象编程思想,而封装就是面向对象编程很重要的一部分;C++讲究万物皆可对象,对象到底是什么?和类又有什么关系呢?举个例子:人类就涵盖了世界上各种各样不同的人,所以人类就是一个类,这个类的属性可以有身高、体重、年龄、肤色、性别等等,他们都可能会走路、做饭、睡觉等行为;而每一个人都是这个类的对象;类就是将一个对象的属性和行为的综合;C++用class定义一个类,类中有三部分:1、属性2、行为3、访问权限(public,protected,private)语法:原创 2021-05-30 20:08:47 · 497 阅读 · 2 评论 -
STL中的unique函数
unique是STL中一个比较实用而且非常常用的函数之一了;作用就是容器或数组去重,但是并不是完全的去重;它只是把重复的元素放在了容器的后面,而且去重前一定要先排序;头文件:#include<algorithm>特点:去重的是有序容器,所以如果无序的话需要先sort排序去重后重复的数据并没有删除,只是移到了容器后面返回迭代器,迭代器指向的是重复元素的首地址(可以借用这一点删除后面的重复元素)下面就用一个案例来简单说明:#include<iostream>#inc原创 2021-09-16 11:13:32 · 1158 阅读 · 2 评论 -
STL中的priority_queue(优先队列)
引言priority_queue 也是一种队列,queue 有的性质和操作它也有(但是没有back操作了),唯一不同就是它可以自动排序;它的本质是通过堆实现的,在堆排序中会见到它,下面说一下它的用法;基本内容头文件#include<queue>定义priority_queue<Type, Container, Functional>Type就是该队列的数据类型, Container是保存数据的容器类型,且该容器必须由数组实现的,默认情况是vector;Functional原创 2021-09-01 18:43:56 · 988 阅读 · 0 评论 -
STL中的查找算法
引言总结一下STL中的几种常见的查找算法;注:使用这些算法前都要先加上头文件:#include<algorithm>————————————————————————————————————————————————————————findfind函数里面有三个参数,find(begin,end,value)前两个是迭代器,是容器的开始和结尾,后一个是所要查找的值即在容器[begin, end)区间内,寻找是否有指定的value值的元素,如果有,返回该元素的迭代器,没有则返回end;原创 2021-08-25 17:41:23 · 1519 阅读 · 1 评论 -
C++的几种遍历形式
引言看到了STL中的for_each遍历算法,看完后第一感觉就是for_each能做的用for循环也照样可以啊,于是归类了几种遍历形式,在这里总结一下;在这里说一下为什么C++中有这么多种的遍历形式,主要因为C++是多范式语言,通俗来说就是有什么就加什么,只要你能用的舒服就行;下面罗列四种遍历方式;以vector类为例:先定义一个vecctor和写一个输出函数,为了统一,这里先来一个模板:#include<iostream>#include<vector>#inclu原创 2021-08-24 19:38:37 · 8646 阅读 · 0 评论 -
内建函数对象(STL)
引言函数对象是重载函数调用操作符的类,函数对象使用重载的()时,因为类似函数调用,也叫仿函数所以仿函数(函数对象)就是一个类我们可以自己建立函数对象,这里就不具体说了;STL中同样给我们提供了一些内建的函数对象,可以直接使用;分为以下三种:算术仿函数关系仿函数逻辑仿函数这些仿函数的用法和一般的函数用法差不多相同,但是使用需要头文件`#include算术仿函数几种常见的算术仿函数:template<class T> T plus<T> //加原创 2021-08-24 17:21:18 · 453 阅读 · 0 评论 -
lower_bound和 upper_bound 用法(STL)
lower_bound和 upper_bound的头文件是#include<algorithm>lower_bound返回第一个大于等于 x 的数的地址/迭代器upper_bound返回第一个大于 x 的数的地址/迭代器————————————————————————————————————————————————————————两者都是类似binary-search(二分)来查找 ,用法分为两部分说,数组这里就拿lower_bound举例,upper_bound用法一样aut原创 2021-08-23 12:08:22 · 1427 阅读 · 0 评论 -
STL 中的 accumulate(C++)
STL中的accumulate的头文件为#include<numeric>,accumulate有三个形参:头两个形参指定要累加的元素范围,第三个是累加的初值数组求和vector<int> vec(10, 100)int sum = accumulate(vec.begin(), vec.end(), 0) //结果为1000int sum = accumulate(vec.begin(), vec.end(), 100) //结果为1100字符串求和(拼接)vect原创 2021-08-19 12:58:03 · 702 阅读 · 0 评论 -
set/multiset/unordered_set和map/multimap/unordered_map基础汇总
引言在STL中,有两种很常见的关联容器,分别是set和map,序列容器的元素是按照在容器中的位置来顺序保存和访问的,而关联容器的元素是按关键元素来保存和访问的。所以关联容器经常用在关键字的查找中,效率很高,这里就简单介绍一下这两种容器,为下面即将学到的一种数据结构**哈希表(散列表)**做一个基础铺垫。set/multiset/unordered_set容器简介set里面每个元素只存有一个key,保证查询的高效性,且所有元素都会在插入时被自动排序本质set的底层是由红黑树实现的(一种平衡二叉搜索原创 2021-08-05 17:01:44 · 318 阅读 · 0 评论