
C++编程
文章平均质量分 67
以实战为线索,逐步深入理解C++原理
AI 菌
算法工程师一枚,优快云博客专家;NLP、CV、语音算法跨界选手,欢迎一起交流学习!
展开
-
C++中虚函数的作用?
虚函数简明理解!原创 2023-07-21 00:26:53 · 2212 阅读 · 0 评论 -
动态数组类:vector
在程序设计过程中,如果我们知道数组的长度,可以定义静态数组。实际上,我们会经常遇到数组长度在一开始并不能确定的情况,那么这个时候就可以用动态数组类vector来定义数组了,这样不仅节省了存储的内存,还使得程序更加灵活可靠。1.vector的特点vector是个模板类,提供了动态数组的通用功能,特点如下:(1)在数组末尾添加(删除)元素所需的时间是固定的。(2)在数组中间添加(删除)元素所需...原创 2020-03-25 22:50:19 · 2284 阅读 · 32 评论 -
C++:常用的string类字符串函数(二)
想了解字符串string类的基本用法,可参见:C++:string类的基本用法(一)文章目录1 拼接字符串append()2 查找字符或者子字符串find()3 截短字符串erase()4 字符串反转reverse()5 大小写转换transform()常用的字符串函数包括:复制、拼接、查找字符、截短、反转、大小写转换等。使用这些字符串函数,能够轻松的解决很多字符串操作问题,并且使你的代码变得...原创 2020-03-25 15:37:56 · 1282 阅读 · 17 评论 -
C++:string类的基本用法(一)
目录1.使用string类的优点2.初始化和基本运用3.访问string字符串的字符内容1.使用string类的优点在C++中,字符串是一个字符数组。最简单的字符数组数组可这样定义:char staticArray[20]; //声明一个固定长度的静态字符数组这样的一个静态数组,它的长度是固定的。而在很多实际问题中,我们定义的字符数组长度事先是不能确定的,因此我们希望能声明一个动态字符数...原创 2020-03-02 22:54:43 · 1153 阅读 · 1 评论 -
学习C++:编写具有良好风格的代码
养成一个良好的编程习惯,不仅有助于代码的可靠性和可读性,还可以避免coding过程中出现不必要的bug。下面来总结一下C++编程过程中需要注意的一些小技巧和问题:1.给变量指定有意义的名称(按照常用的命名规则),这样使得代码更容易被理解。2.对于int、float、double等变量,务必进行初始化。3.务必将指针初始化为NULL或者有效的地址,比如运算符new返回的地址。4.使用数组时,...原创 2020-02-15 17:34:05 · 827 阅读 · 1 评论 -
学习C++:异常处理
1.导致异常的原因异常可能是外部因素导致的,如系统没有足够的内存;也可能是应用程序内部因素导致的,如使用的指针包含无效值或除数为零。为向调用者指出错误,有些模块引发异常。异常会打断应用程序的正常流程。毕竟,如果没有内存可用,应用程序就无法完成分配给它的任务。然而应用程序可处理这种异常:向用户显示一条友好的错误消息,采取必要的挽救措施并妥善地退出。2.使用try和catch捕获异常要捕获语句...原创 2020-02-15 16:24:20 · 864 阅读 · 8 评论 -
学习C++:使用stringstream对字符串进行转换
假如你有一个字符串,包含字符串值为20。如果你想将其转换为整型值,那么就可以使用stringstream类执行相应的转换操作。使用stringstream类,同样也可将整型转换为字符串。要使用std::stringstream类,需要包含头文件:#include <sstream>下面将演示如何使用stringstream类在整型和字符串之间进行转换:#include <...原创 2020-02-14 16:56:00 · 2550 阅读 · 1 评论 -
学习C++:读写二进制文件
上一篇博客https://blog.youkuaiyun.com/wjinjie/article/details/104303770中,已经总结了处理普通文本文件的读写流程。处理二进制文件的流程与上一篇介绍的流程差别不大,不同的是在打开文件时使用ios_base::binary标志。通常使用ofstream::write和ifstream::read来读写二进制文件。首先补充函数open()打开文件流的各...原创 2020-02-14 16:04:33 · 1691 阅读 · 1 评论 -
学习C++:使用std::fstream处理文件
在上一篇博文https://blog.youkuaiyun.com/wjinjie/article/details/104301129中,总结了标准输出流cout和标准输入流cin的用法。在使用C++做项目的过程中,经常会遇到处理文件(创建、读、写文件)的时候。因此本次主要介绍用于操作文件的输入和输出流std::fstream,fstream从ofstream那里继承了写入文件的功能,并从ifstream那里...原创 2020-02-14 14:11:46 · 7526 阅读 · 0 评论 -
学习C++:输入输出流cout与cin
1.重要的C++流类和流对象std命名空间中常用的C++流类cout 标准输出流cin 标准输入流cerr 用于显示错误的标准输出流fstream 用于操作文件的输入和输出流,继承了ofstream和ifstreamofstream 用于操作文件的输出流类,即用于创建文件ifstream 用于操作文件的输入流类,即用于读取文件stringstream 用于字...原创 2020-02-13 21:28:47 · 964 阅读 · 0 评论 -
学习C++:智能指针
1.什么是智能指针C++智能指针是包含重载运算符的类,其行为像常规指针,但智能指针能够及时妥善地销毁动态分配的数据,并实现了明确的对象生命周期,因此更有价值。常规指针存在的问题C++在内存分配、释放和管理方面提供了全面的灵活性;另一方面,它有可能产生与内存相关的问题,比如动态分配的对象没有正确地释放将导致内存泄漏。智能指针的作用智能指针的行为类似常规指针,但通过重载的运算符和析构函数确保...原创 2020-02-13 18:19:54 · 875 阅读 · 0 评论 -
学习C++:bitset类
1.bitset类std::bitset是一个STL类,用来处理以位和位标志表示的信息。它不是STL容器类,因为它不能调整长度。要使用bitset类,必须包含头文件:#include <bitset>实例化std::bitset实例化这个模板类时,必须指定需要管理的位数:bitset <4> fourBits; //初始化为0000初始化一个用字符串字面量(c...原创 2020-02-12 18:01:20 · 703 阅读 · 0 评论 -
学习C++:自适应容器(栈和队列)
前言标准模板库(STL)提供了一些容器(比如stack、queue、priority_queue),使用这些容器来模拟栈和队列的行为。这种内部使用一种容器但呈现另一种容器的行为特征称为自适应容器。1.栈和队列的行为特征栈和队列与数组或list非常相似,但是对插入、访问和删除元素的方式有一定的限制。可将元素插入到什么位置以及可以从什么位置删除元素决定了容器的行为特征。栈:栈是先进后出系统,...原创 2020-02-12 15:27:25 · 743 阅读 · 2 评论 -
学习C++:STL算法
STL算法就是像查找、搜索、删除等操作的通用函数,其应用范围很广。要使用STL算法,应用程序必须包含头文件。原创 2020-02-12 00:59:14 · 618 阅读 · 0 评论 -
学习C++:lambda表达式(二)
上篇已经介绍了lambda的基本概念、一元函数对应的lambda以及一元谓词对应的lambda表达式;这篇将继续介绍lambda表达式。1.lambda表达式的捕获列表原创 2020-02-11 20:56:31 · 643 阅读 · 0 评论 -
学习C++:lambda表达式(一)
前言:lambda是C++11新增的,因此对你的编译器是有要求的。比如你用的是Visual Studio,那么版本要求是VS2011之后的。1.lambda表达式是什么原创 2020-02-11 12:36:33 · 613 阅读 · 0 评论 -
学习C++:理解函数对象
1.函数对象与谓词 概念上,函数对象是用作函数的对象;实现上,函数对象是实现operator()类的对象。 其实函数和函数指针都属于函数对象,但是实现了operator()的类的对象才能保存类的成员属性的值,才能用于标准模板库(STL)算法。 常用于STL算法的函数对象有以下两种类型: 一元函数:接受一个参数的函数,如f(x)。如果该函数返回一个布尔值,则该函数为谓...原创 2020-02-10 20:48:41 · 797 阅读 · 7 评论