- 博客(22)
- 收藏
- 关注
原创 函数对象的介绍
cout << "myPrint调用次数为: " << myPrint.count << endl;cout << "找到了大于5 的数字为: " << *it << endl;特点:函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值。//函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值。//函数对象超出普通函数的概念,函数对象可以有自己的状态。函数对象超出普通函数的概念,函数对象可以有自己的状态。本质:函数对象(仿函数)是一个类,不是一个函数。函数对象可以作为参数传递。
2023-12-21 11:58:54
348
原创 map/multimao容器
cout << "姓名:" << pos->second.name << "工资: " << pos->second.salary << endl;//分组后,将员工部门编号作为key,具体员工工作为value,放入到multimap容器中。map不允许插入重复key元素,count统计而言,结果要么是0,要么是1;pair中第一个元素为key键值,起到索引作用,第二个元素为value实值。//key部门编号,value具体员工。//遍历vector容器,取出每个员工,进行随机分组。//产生随机部门编号。
2023-12-21 11:57:46
344
原创 set容器和multiset容器
cout << "找到元素:" << *pos << endl;cout << "第一次插入成功" << endl;cout << "第一次插入失败" << endl;cout << "第一次插入成功" << endl;cout << "第一次插入失败" << endl;cout << "未找到元素:" << endl;//set容器特点:所有元素插入时候自动被排序。set不可以插入重复数据,而multiset可以。//set容器 和multiset容器的区别。//set容器不允许插入重复值。
2023-12-21 11:37:53
361
原创 list容器
备注:list有一个重要的性质,插入操作和删除操作都不会造成原有list迭代器的失效,这在vector是不成立的。inset(pos,beg,end):在pos位置插入[beg,end]区间的数据,无返回值。cout << "第一个元素为:" << L1.front() << endl;cout << "最后一个元素为:" << L1.back() << endl;insert(pos,elem):在pos位置插elem元素的拷贝,返回新数据的位置。//L1[0] 不可以用[]访问list容器中的元素。
2023-12-21 11:36:20
313
原创 deque容器
deque内部工作原理:deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据。中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间。对于支持随机访问的迭代器的容器,都可以利用sort算法直接对其进行排序。vector访问元素的速度会比deque快,这和两者内部实现有关。vector对于头部的插入删除效率低,数据量越大,效率越低。deque相对而言,对头部的插入删除速度会比vector快。//insert插入。82.deque插入和删除。//deque容器排序。
2023-12-21 11:34:42
352
原创 vector容器
cout << "v1的容量: " << v1.capacity() << endl;cout << "v1的大小: " << v1.size() << endl;cout << "v的容量为:" << v.capacity() << endl;cout << "v的容量为:" << v.capacity() << endl;cout << "v的大小: " << v.size() << endl;cout << "v的大小: " << v.size() << endl;
2023-12-21 11:33:37
314
原创 指针变量,也即传递的是地址
一般来讲,32位编译系统,对short、int分配2byte空间,对float、double、long、long long分配4byte长度。long、long long、float、double数据类型的长度则不尽相同,从而在计算除char类型以外的数据长度时,需要查看该编译器对数据类型的空间长度配置信息。2、数组与指针的共同之处在于:数组用的“下标法”指向数据,指针用的“地址”指向数据,两者在进行编译时,是等价的。这是因为:实参数组名代表一个固定的地址(也即数组首元素的地址),固定的地址非变量;
2023-12-21 10:24:53
420
原创 今日打卡(被指针戳死)
2、BOOL布尔变量与零值比较:不可将BOOL变量与TRUE、FALSE、0、1比较。3、如果指针变量*p指向数组a[10],则p也可以带“下标”,即p[i]语法正确,其相当于*(p+i)。4、浮点变量与零值比较:不可将浮点变量与诸如0.0、0.1、0.200之类的数用==、!则有:*(a + i) 和*(p + i)等同,都是指向a[i]延伸1:对于数组a,有:(a + 1)指向的是数组a的第2个元素a[1]。5、指针变量与零值比较:应当用==、!3、整形变量与零值比较:采用==、!
2023-12-21 10:20:24
330
原创 打卡一个简单的函数
/void代表无返回值,swap为函数名,(int a,int b)代表定义两个整数,存储函数的输入值。swap(a,b);
2023-12-20 22:49:42
378
1
原创 变量给指针赋值
2、C语言的函数调用,实参变量与形参变量之间的传递:①方向:“单向的”,即实参变量-->形参变量,反之则不行。③函数的返回值数量:有且只有一个。b)常数:前提是指针p已经定义,且已赋值。(正确)而int *p;a)变量名:p = &a;(正确) 而 *p = a;定义指针变量,同时对其进行初始化:int *p = &a;deliver(p);(正确) 而deliver(*p);3、在被调函数中改变实参指针所指向变量的值,可以改变主调函数中变量的值。指针类型函数参数的传递,传的是“地址”。
2023-12-20 18:01:33
504
1
原创 指针及变量的地址
如果是,则int insulation_const(void)正确,而void insulation(void)则错误。2、弄懂指针,首先要明确变量的存储和读取。如果程序中定义了变量A,则编译时,会对A分配内存单元(即一定长度的空间,长度根据编译系统及变量数据类型定),3、指针的由来:一般的变量(例如 i=3)为直接访问变量的值,而指针可以通过间接方式(变量的地址)访问变量的值。也即:程序经过编译后,变量名A转换为了A的地址,对A的存取都是通过该地址进行的。1、指针即为一个变量的地址。
2023-12-20 17:59:00
326
1
原创 函数内调用
5、static的使用:用auto, register, static声明变量时,需跟变量定义一起用,而不能单独使用。2)用static声明局部变量:使该变量存储在静态存储区,程序执行过程中不会释放所分配的空间。2、C-Free不支持主函数为空函数的写法:void main(){};
2023-12-20 17:56:30
392
1
原创 今日日志
提倡用以下方式避免在该种情况下使用extern:在源程序文件的开头或者引用A的所有函数之前定义A;定义形参变量为全局变量,然后在调用函数中用extern声明该变量,将形参变量的作用域扩展到调用函数中。3、关键字extern的定义:对变量用extern作“外部变量声明”,表示把该外部变量的作用域扩展到此位置。4、extern的由来:一个全局变量A的作用域:从定义处到文件结束,在A定义之前的函数不能引用A这个外部变量。而且,一个程序中的多个源程序文件中都定义了外部变量A,则在进行程序的连接时会报错:重复定义。
2023-12-20 17:54:32
342
1
原创 学c语言心得
开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。自己编好程序上机调试运行时,可能有很多你想不到的情况发生,通过解决这些问题,可以逐步提高自已对 C 语言的理解和程序开发能力。2.熟悉程序开发环境、学习计算机系统的操作方法通过上机实验,熟练地掌握 C 语言开发环境,为以后真正编写计算机程序解决实际问题打下基矗同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。
2023-12-20 17:27:22
337
1
原创 写程序心得
抄程序的方法但我认为它是进步最快的方法,抄程序是积累经验的时候,而做项目才是真正把所学为所用的时候,可以说只有你做一个大点的项目出来才能真正是说明你学到了东西,你会用所学的东西,要不然就算你学的再多,不会用也没用。你一定要把它几乎所有的用方法都能清楚明白,一句话要学精了,语法掌握住了,接下来就是写程序了,其实抄程序并不是说一直没有目的去抄,你会发现当你抄一段时间以后就不用再抄了,因为大部分都是一样的你一看就知道怎么写了,当你一看到程序就知道它什么功能,那里有错的时候。
2023-12-20 17:14:49
327
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人