C++
9677
这个作者很懒,什么都没留下…
展开
-
进一步理解C++里的封装有什么作用
当谈论封装时,我们实际上是在讨论面向对象编程中的一个重要概念,即数据隐藏。封装通过将数据和操作数据的方法捆绑在一起,从而防止外部对象直接访问和修改类的内部数据,以保护数据的完整性和安全性。原创 2024-03-25 16:01:15 · 376 阅读 · 0 评论 -
那么在STL里,size()这个函数都是变化的吗
例如,如果在遍历过程中修改容器(如添加或删除元素),可能会影响循环的迭代次数或条件判断。因此,在设计算法或逻辑时,对容器操作的影响和结果应该被仔细考虑。是动态变化的,它随着容器中元素的增减而变化。这一特性是容器设计的基础,使得STL容器能够灵活地用于各种数据存储和处理场景。成员函数返回的是容器当前持有的元素个数。当你向容器中添加或从容器中移除元素时,容器的大小(即。在使用循环或者其他控制结构遍历这些容器时,尤其需要注意。是的,在C++标准模板库(STL)中,对于容器类(如。返回的值)会相应地增加或减少。原创 2024-03-18 10:33:47 · 382 阅读 · 0 评论 -
啥是函数调用运算符operator()
为了重载函数调用运算符,你需要在类内定义operator()方法。这个方法可以接受任意数量和类型的参数,也可以有返回值。public:// 函数体。原创 2024-03-14 11:15:40 · 377 阅读 · 0 评论 -
力扣 239. 滑动窗口最大值
chatgpt写的代码,,这个就是毋庸置疑的,就直接接受就行了其次,不知道单调队列是啥,知道单调队列是啥了,又不知道单调队列该如何实现,单调队列用双端队列 deque实现,又不怎么清楚deque STL的相关操作,双不双端其实没有硬性要求,因为STL 里只有这个deque的队列有关的容器明白了语法上怎么实现,现在又得发愁算法上如何实现,如何保持单调队列呢----即如何让队列内的元素一直保持递减呢?将入队元素和队尾元素比较,如果队尾元素小了,把队尾元素踢出去。这也就说明了,原创 2024-03-08 16:10:57 · 919 阅读 · 0 评论 -
vector比deque多一个在数组中部插入的功能吗?
不是的。实际上,deque(双端队列)和vector(向量)这两种C++标准模板库(STL)容器都支持在任意位置插入和删除元素,包括中间位置、开头和末尾。它们都提供了insert和erase成员函数来实现这些操作。vector。原创 2024-03-08 15:04:37 · 350 阅读 · 0 评论 -
vector的STL操作
vector是 C++ 标准模板库(STL)中实现的动态数组,它能够存储连续的元素,这些元素可以通过索引访问。与数组相比,vector的大小可以动态变化,提供了许多便利的成员函数来管理其存储的元素。下面是vector。原创 2024-03-08 14:55:58 · 355 阅读 · 0 评论 -
deque 这个STL 的操作
deque(双端队列)是C++标准模板库(STL)中的一种容器,支持在队列的前端和后端高效地插入和删除元素。与vector相比,deque允许高效地在序列的前端进行插入和删除操作,而vector仅支持在尾部高效地添加和删除元素。deque是一个动态数组,能够根据需要自动重新分配存储空间。下面列出了deque。原创 2024-03-08 11:13:37 · 377 阅读 · 0 评论 -
gcc和g++的区别,如何看自己的编译器支持的C++的版本
gcc和g++的区别主要在于它们处理不同后缀的文件类型、编译和连接阶段的不同调用方式,以及它们对C++特性的支持方式。以下是详细介绍:123。用一句话来说,就是gcc将程序视为c语言的,g++将程序视为C++的。C ++ 98:__cplusplus是199711L。C ++ 11:__cplusplus是201103L。C ++ 14:__cplusplus是201402L。C ++ 17:__cplusplus是201703L。先普及一下各编译器的版本,调用如下函数,我的DEV的编译器是gcc的,原创 2024-02-26 17:50:17 · 646 阅读 · 0 评论 -
C++里的异常
当然可以!异常处理在 C++ 中是一个重要的概念,它帮助我们处理运行时。trycatch和throw。就是这个异常可以避免一些错误的发生,在程序执行这些会出现错误的程序之前先给拦住,省了对电脑造成不可挽回的错误。使用方法:先写函数体,然后用条件语句,如果出现什么样的条件之后,会出现异常,那么就用throw抛出,后面用try来尝试调用这个函数,然后来测试调用这个函数,如果过出现throw的那个条件,就会用catch捕捉到异常,就是throw抛出的异常,这个catch的类型取决于 throw抛出的类型。原创 2024-02-22 14:34:53 · 318 阅读 · 0 评论 -
C++的STL都由什么组成
C++标准模板库(STL)是C++语言的一部分,提供了一系列模板类和函数,旨在帮助程序员处理常见的编程任务,如数据结构和算法操作。容器(Containers)、迭代器(Iterators)、算法(Algorithms)函数对象(Function objects)。原创 2024-02-21 16:19:59 · 1071 阅读 · 0 评论 -
C++ STL string字符存取
#include<iostream>#include<string.h>using namespace std;void test01(){string str="hello";//1.通过[]访问单个字符 for(int i=0;i<str.size();i++){ cout<<str[i]<<" ";} cout<<endl;//2.通过at方式访问单个字符for(int j=0;j<str.size();j原创 2024-02-08 18:12:08 · 416 阅读 · 1 评论 -
对比递归和循环来实现n的阶乘来更深入了解递归海贼OJ184路飞吃桃
为了方便看,我们先都求5的阶乘。原创 2024-01-13 17:20:09 · 438 阅读 · 0 评论 -
选择排序算法以及其不稳定性具体指的是
【代码】选择排序算法以及其不稳定性具体指的是。原创 2024-01-01 23:24:12 · 348 阅读 · 0 评论 -
打开c语言生成exe文件,出现闪退的解决方法
这里的.bat文件是批处理文件(也被称为批处理程序或脚本)是无格式的文本文件,它包含一条或多条命令。首先,生成的exe文件本质是控制台程序,这些都是依赖于windows的控制台窗口,程序执行完就退出了。(比如,如果你程序中有scanf语句,那么打开exe的时候不会立马结束,而是等待你的输入,等跑完程序,再自动关闭,就是这个道理)原理就是停止,等待用户输入,即你没输入的话,程序就不算执行完毕。起初个别问的时候,我只是简单的说明程序运行完了,就自动关了,为什么打开c语言生成的exe文件,立马闪退。原创 2023-05-30 08:48:12 · 3905 阅读 · 0 评论 -
STL学习+acwing 67 数字在排序数组中出现的次数
67. 数字在排序数组中出现的次数。原创 2023-04-21 21:08:34 · 354 阅读 · 0 评论 -
C++ char数据类型
C++在输入字符串的时候,如hello,得用一个string 的变量来接收,那么char到底是干啥的char 是最简单的字符数据类型该类型的变量只能容纳**一个字符**原创 2023-01-15 22:05:18 · 93 阅读 · 0 评论 -
调用整数或字符数组函数里的参数应该传入啥
调用整数或字符数组函数里的参数应该传入啥原创 2022-07-21 22:39:14 · 91 阅读 · 0 评论 -
C++头文件 iomanip输入输出格式控制
iomanip,在C++程序里面经常见到下面的头文件#include ,io代表输入输出,manip是manipulator(操纵器)的缩写(在c++上只能通过输入缩写才有效)。具体用法:#include <iostream> #include <iomanip> using namespace std;int main(){ double PI=3.141592654; cout<<PI<<endl;原创 2021-03-27 10:01:30 · 1641 阅读 · 0 评论 -
C++模板1
除了面向对象的变成之外,C++还有一种编程思想叫做泛型编程主要利用的技术就是模板C++提供两种模板机制:函数模板和类模板1 函数模板语法:建立一个通用函数,其函数返回值类型和形参类型可以不具体指定,用一个虚拟的类型来代表template<typename T>//函数声明或定义template 声明建立模板typename 表明后面是数据类型,可以用class代替T可以替换成别的比如你要写两个交换函数,一个是实现两个整数交换的,一个是实现两个浮点数交换的一般是这么做的/原创 2021-04-13 13:27:39 · 56 阅读 · 0 评论 -
字符串强制类型转换成整数型字符串强制类型转换成整数,转换成的是ASCII
字符串强制类型转换成整数,转换成的是ASCII。所以你转化成之后可以减去49对于sstream这个是针对于string的对于string的相关处理不会别瞎用原创 2021-06-23 09:51:31 · 1252 阅读 · 0 评论 -
int main( int argc, char* argv[] ) 中arg和argv参数是什么
https://blog.csdn.net/dgreh/article/details/80985928带形参的main函数,如 main( int argc, char* argv[], char **env ) ,是UNIX、Linux以及Mac OS操作系统中C/C++的main函数标准写法,并且是血统最纯正的main函数写法。在如今的Visual Studio编译器中,main()函数带有参数argc和argv或者不带,即无论是否在函数体中使用argc和argv,返回值为void或不为void,原创 2021-06-16 15:57:24 · 105 阅读 · 0 评论 -
指针函数和函数指针
函数指针就是 一个指针,指向函数的 例如void (*pfuc)(参数)=fuc;指针函数就是返回类型为指针,跟整形函数似的详细的看这原创 2021-02-07 12:20:03 · 63 阅读 · 0 评论 -
没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换)”的处理
#include<iostream>using namespace std;class Phone {public: Phone(string pname) { m_pname = pname; } string m_pname;};class Person {public: Person(string name, string pname):m_name(name),m_phone(pname) { } string m_name; Phone m_phone原创 2021-02-01 10:47:47 · 706 阅读 · 1 评论 -
C++ 读文件 将文件内容读入到字符串string中的方法
#include <string>#include <fstream>#include <sstream>#include <iostream>#include <stdlib.h>using namespace std;//从文件读入到string里string readFileIntoString(char * filename){ifstream ifile(filename);//将文件读入到ostringstream对原创 2020-12-19 16:45:49 · 9703 阅读 · 4 评论 -
C++ STL string容器 字符串比较
功能描述字符串之间的比较主要是用来比较两个字符串是否相等,判断谁大谁小意义不大。#include<iostream>#include<string.h>using namespace std;void test01(){string str1="hello";string str2="hello";if(str1.compare(str2)==0)cout<<"str1=str2"<<endl;else cout<<str1.原创 2020-10-11 20:31:46 · 999 阅读 · 0 评论 -
C++ STL 查找和替换
string查找和替换查找:查找指定字符串是否存在替换: 在指定位置替换字符串1.查找#include<iostream>#include<string.h>using namespace std;void test01(){string str1="abcdefg";int pos=str1.find("df");cout<<pos<<endl; } int main(){ test01(); return 0原创 2020-10-11 20:05:13 · 200 阅读 · 0 评论 -
C++ STL string容器 string 基本概念 string构造函数 string 赋值操作 string 字符串拼接
1.string 基本概念本质:string 是C++ 风格的字符串实际上是一个类string和char的区别:char是一个指针string是一个类,类内部封装了char*,管理这个字符串,是一个char型的容器特点string 类内部封装了很多成员方法例如查找find,拷贝copy,删除delete,替换replace,插入 insertstring 管理char所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责。2.string构造函数构造函数原型:string();原创 2020-10-11 19:24:57 · 236 阅读 · 0 评论 -
C++ vector初学 vector 存放内置数据类型 存放自定义数据类型 存放自定义数据类型指针 Vector 容器嵌套容器
vector 存放内置数据类型#include<iostream>using namespace std;#include<vector>#include<algorithm>//标准算法头文件 //vector 容器存放内置数据类型void test01(){ //创建了一个vector容器,数组 vector<int> v; //向容器中插入数据 v.push_back(10);//尾插法 v.push_back(20); v.原创 2020-10-10 23:03:25 · 1005 阅读 · 0 评论 -
c++错误提示reference to ‘less‘ is ambiguous
原因less是c++标准库的函数所以不能用来做用户标识符也就是你命名不正确,赶紧换一个吧原创 2020-09-20 12:42:18 · 299 阅读 · 0 评论 -
C++文件 读文件
读文件#include<iostream>#include<fstream>#include<string>using namespace std;void test01(){ ifstream ifs; ifs.open("文件.txt",ios::in); //判断文件是否打开成功 if(!ifs.is_open()) //is_open()的返回值为布尔类型 {cout<<"文件打开失败!"<<endl; return;原创 2020-09-13 16:54:47 · 205 阅读 · 0 评论 -
C++文件操作 文本文件 写入
需要头文件文件的类型分为两种:1.文本文件 文件以ASCII码形式存储在计算机中2.二进制文件 文件以二进制的形式存储在计算机中,用户一般不能直接读懂它们操作文件的三大类:1.ofstream:写操作 (输出,数据输出到文件里)2.ifstream :读操作 (输入,将数据从文件里读入到内存里,供程序使用)3.fstream:读写操作文本文件1.写文件包含头文件#include2.创建流对象ofstream ofs;//ofs是随便起的你爱起啥起啥3.打开文件ofs.原创 2020-09-13 15:35:03 · 6378 阅读 · 0 评论 -
如何不用for循环输入数组元素,可以不用事先确定要输入的元素的个数。以逆序输出数组元素为例。
#include<stdio.h>#define maxsize 105int a[maxsize];int main(){ int x,n=0; while(scanf("%d",&x)==1) { a[n]=x; n++; } for(int i=n-1;i>=0;i--) printf("%d\n",a[i]); return 0;} 此处的scanf只要scanf不异常,相当于while(1),但是它等待输入。因为正常情况下scanf原创 2020-09-11 14:11:27 · 2057 阅读 · 1 评论 -
C++ 或C里 求绝对值函数的头文件和函数fabs和abs
1.在C++中,只需要包括即可。2.C语言中,求整数的绝对值abs()应包含<stdlib.h>求浮点数的绝对值fabs()应该包含<math.h>abs是用来求整数的fabs是用来求浮点数的往细里讲就是1.abs函数(推荐使用<stdlib.h>,C++可用)的原型是:int abs(int x);求x的绝对值,传入值x的类型是int型,返回值类型也是int型。2.fabs(推荐使用<math.h>,C++可用)函数的原型是:doubl原创 2020-08-18 20:23:28 · 4824 阅读 · 0 评论 -
C++标识符命名规则
作用:C++规定给标识符(变量、常量)命名时,有一套自己的规则标识符不能是关键字标识符只能由字母、数字、下划线组成第一个字符必须为字母或下划线标识符中字母区分大小写建议:给变量起名字的时候要做到见名知意...原创 2020-08-18 16:44:08 · 1186 阅读 · 0 评论 -
小学期 三角形的类别判断 C++
定义二维点(Point)类,包含点的坐标x和y,再定义二维的三角形 (Triangle)类,在三角形类中能对三角形类别,首先判断输入的三个点能否 构成三角形,然后判断是否为等腰三角形、等边三角形、直角三角形、等腰 直角三角形。 提示: (1)思考程序中相等判断运算符是否采用“==”? (2)坐标值精确到小数点后3位, 2 =1.414, 3 =1.732, 5 =2.236,可以采 用以下测试数据: 等腰三角形:(0,0),(0,2),( 5 ,1) 等边三角形:(0,0),(0,2),( 3 ,1) 直角原创 2020-08-18 16:42:37 · 1512 阅读 · 0 评论 -
C++结构体变量的创建方法
对于结构体变量的创建方法比较不熟悉,特意又重新查阅了资料学习了一下菜鸟教程,对结构体的讲解特别详细struct Books{ char title[50]; char author[50]; char subject[100]; int book_id;} book;在一般情况下,tag、member-list、variable-list 这 3 部分至少要出现 2 个。以下为实例://此声明声明了拥有3个成员的结构体,分别为整型的a,字符型的b和双精度的c原创 2020-08-18 08:46:46 · 2417 阅读 · 0 评论 -
算法 给定N个整数序列{A1,A2,....,An}求所有子序列之和的最大值
最简单的算法:int Max1(int A[],int N){int sum1,maxsum=0,i,j,k;for(i=0;i<N;i++){for(j=i;j<N;j++){sum1=0;for(k=i;k<=j;k++){sum1+=A[k];if(sum1>maxsum){maxsum=sum1;}}}}return maxsum;}这个算法的时间复杂度太高,肯定得优化。对于相同的i,不同的j我们只需要加上下一项,求和就可以了,这样可以.原创 2020-08-15 15:19:38 · 4496 阅读 · 0 评论 -
如何用命令行运行可执行程序.exe
也有可以在命令行编译运行程序的,得找到自己的编译器位置然后配置,如果想弄的可以百度这里主要是介绍如何运行可执行程序在windows 系统中,开始菜单右键,点击运行,输入cmd(请务必采用这种方式打开命令行)出现这种界面,>是命令提示符,将命令以及所要执行的命令的程序的位置写好,回车。好处:如果你需要看程序运行时间,可是手动输入的时间也会记录在内,因此,让windows自动输入更准确下面是代码示例和运行结果#include<iostream>#include<time.原创 2020-08-15 06:46:46 · 8662 阅读 · 0 评论 -
求程序运行时间的函数clock()以及 CLOCKS_PER_SEC与CLK_TCK的区别,用法
最近学习算法和数据结构涉及到一个时间问题要看程序运行所需的时间。所以要用clock()函数time.h的头文件但是这个函数,单位不是s,咱的时间是s所以要除以个CLOCKS_PER_SEC这个表示一秒钟内CPU运行的时钟周期数(时钟计时单元)百度百科是这么说的这两个有什么区别最新VS2019的说法我们用的时候只需要,会用就行下面是是例子:#include<iostream>#include<time.h> using namespace std;原创 2020-08-14 17:02:12 · 5550 阅读 · 0 评论 -
C++函数重载,遇到引用和默认参数的问题
作用:函数名可以相同,提高复用性函数重载满足条件:同一个作用域下函数名称相同函数参数类型不同 或个数不同或顺序不同注意:函数的返回值不可以作为函数重载条件根据你调用函数传入的不同的参数的个数,参数类型,顺序来进行选择相应的函数。注意事项:引用作为重载条件在这里插入代码片函数重载遇到默认参数...原创 2020-08-12 20:21:33 · 939 阅读 · 0 评论