本小节主要介绍了C与C++的区别,以及为什么会有这样的区别
(因为C++可以封装函数,可以设置一个模板,传参的方式可以不同,还有新的类型string....)
概述:5.1.1讲了C++的头文件,5.1.2讲了引用——一种区别于C传值(by value)方式的传引用(by reference)方式,5.1.3讲了字符串string类型。
5.1.4 再谈结构体C++的结构体区别于C可以拥有成员函数,相当于“封装”
struct add{ int sum(int a,int b) { return a+b; } }; int main() { int n; struct add ad; n=ad.sum(1,2); printf("n=%d",n); return 0; }5.1.5 模板-template
拓展:c++中的template理解
函数带模板-设计一个sum函数,使它可以计算任意类型的数组的和(包括结构体):
templateT sum(T *begin,T *end) { T*p; T ans=0; for(p=begin;p!=end;p++) ans=ans+*p; return ans; } int main() { double a[5]={1.6,2.77,3.3,4.7,5.3}; int b[5]={1,2,3,4,5}; cout< 结构体和类(class)也可以是带模板的。
模板其实很少用,但是它可以帮助我们更好地去理解STL,以及为什么C里面没有STL
小结:成员函数以及模板都体现出C++是一个面向对象的语言
5.2 STL初步5.2.1 排序和检索:提到了 sort、lower_bound(查找)、unique(删除有序数列中的重复元素)函数
5.2.2 不定长数组vectorUVA 101 木块问题
题目链接:The Blocks Problem
分而治之:
1.检测非法指令:判断a和b是否在同一堆
2.检测输入所对应的指令,并跳转相应的功能,遇见quit则结束
3.归位功能:在“1”之后执行
4.移位功能:可以对单块和堆进行 *** 作
5.打印功能疑问:
假如我把v1的数全部给了a2,那为什么减少容量的时候写的是v1.resize(h1),而不是v1.resize(h1-1)。
因为我得到的h1是元素的具体位置,它和数组一个原理,实际上的长度是它加上1
#include#include #include #include using namespace std; const int maxn = 30; vector v[maxn]; int n; //找到所在位置,所在高度 void FindBlock(int a,int& p,int& h)//返回p,h的地址 { for(p=0; p >n; for(int i=0; i >s1) { if(s1=="quit") break; cin>>a>>s2>>b; int pa,pb,ha,hb; FindBlock(a,pa,ha); FindBlock(b,pb,hb); if(pa==pb) continue; if(s1=="move") MoveBack(pa,ha); if(s2=="onto") MoveBack(pb,hb); MoveOn(pa,ha,pb); } Cout(); } 拓展1:continue 的用法详解
拓展2:C++ vector的基本 *** 作汇总
5.2.3 集合:set
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)