第五章——c++与STL入门

总结

  1. 参数名之前加&,表示这个参数按照传引用的方式传递,实质上是把实参的地址复制给形参,形参数值的变化会直接反映到实参的值。(址传递)
  2. c++string头文件中定义了string类型,其中有很多方便的函数和运算符,可以把string作为流读写,定义在sstream头文件中。
  3. 结构体中定义的无返回值的函数叫做构造函数,他是在声明变量中调用的,声明Point a,b(1,2)时分别调用了Point()和Point(1,2)。
  4. 模板:可以使函数或者结构体更加灵活,template < typename(or class) 标识符> ,比如在需要输入多种参数类型时使用。
  5. 关联式容器set,map:set中无重复元素,set中的元素都是排好序的,注意s.end()是返回指向最后一个元素之后的迭代器,不是最后一个元素,s.find()如果找不到就返回最后一个值的迭代器,multimap中元素可出现多次;map中有两个参数,key,value,map中键值独一无二,map中定义了【】可以当做数组使用,团队队列的例题有对map使用的展示。
  6. 运算结果过大用大整数类。

函数算法积累

  1. c++头文件:iostream提供了输入输出流,algorithm提供了一些常用的算法,using namespace std把std里的名字导入默认空间,cin代替std::cin。
  2. sort可以给任意对象排序,前提是类型定义了<运算符,其默认是从小到大,void sort(qreater<T>pr);是从大到小。
  3. lower_bound:查找大于或者等于x的第一个位置。
  4. unique函数可以删除有序数组中的重复元素。
  5. vector(不定长数组),clear()清空,resize()改变大小,push_back(),pop_back()尾部添删元素,empty()判空,可直接赋值或者作为函数的返回值,他还可以实现数据结构中的队列,数组和堆栈的所有功能(待考证)。
  6. pow(double x,double y)求x的y次方。(c语言)
  7. #pragma warning(disable:编号)消除警告信息。。。
    扩展:#pragma指令的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。(了解即可,以后可能会用到)
  8. csdlib中的rand()可生成闭区间【0,RAND_MAX】内均匀分布的随机整数,RM至少为32767。

习题总结

  1. 例5-2木块——提取指令中的共同点,编写函数以减少重复代码。
  2. 例5-6团体队列——本题有两个队列(包含关系),小队列有编号和成员两个参数,所以考虑用map简化代码,同时调用queue库函数,因为map无法通过实值找键值,所以可以用个for循环来定义团队编号。模拟的时候用无限循环for(;;)加break(stop)来控制输入,指令用个小字符数组的首元素来代替,剩下的就是queue里面基本函数的使用了。
  3. 例5-7丑数——因为是从小到大生成丑数,所以可以考虑用优先队列保存已生成的丑数(变式——越小的整数优先级越高),从1开始入队,循环终止条件为i=1500,top取队头。由于同一个丑数有多种生成方式,所以需要用一个set存储没有重复的丑数(队列中没有迭代器遍历不方便)。tip:答案过大记得用long long表示。
  4. 习题5-2ducci序列——把n元组放到vector中,因为只有两种情况,所以函数类型用bool即可,其余按部就班,难度不大。
  5. 习题5-3卡片游戏——用队列存储,把pop完的front直接push到queue中,当n为1的时候直接打印front即可。
  6. 习题5-4交换学生——用意向校映射来源校,因为来源校不确定,所以用vector保存,每次读取数据查找是否有对应学校的学生想要交换,若有,则删去查找结果;若没有,将这条输入数据保存到映射中。最后判断映射是否为空就得出交换项目能否进行。注意当映射的某个关键字对应的vector为空时,别忘把这个关键字删掉。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值