##Exercise 1.6
1 | /* |
1 | /* |
##Exercise 1.7
1 | /* |
##2.2 调用函数 例题分析
1 | #include<iostream> |
代码分析:
1.对array进行赋值初始化,然后将array赋值给vector数组。
2.调用display函数,打印出排序之前的数列。
3.调用排序函数(冒泡排序法实现)
4.打印出排序之后的序列。
结果:排序前后数列的顺序并未发生改变。说明程序有错误。
1 | vector before sort: |
错误分析:
1.在Bubble函数中将函数中变化的数据输出至文件,查看其变化。在if语句中,打印出数列的序号以及对应的数据是否发生变化,如下
1 | 交换之前:about to call swap! ix=0 jx=1 swaping 8 with 2 |
以上数据说明
1>swap函数能够实现其功能,完成数据的交换。
2>if的条件语句书写正确,无错误。
所以,现在的问题是,被调用的Bubble函数中的值只在该副本上发生变化,并没有传递到调用函数中,因此,为了使Bubble()函数的参数和传入的实际对象产生关联,应该使用pass by reference的方式传递参数。
程序修正方法:
在Bubble()函数的参数列表中,将程序第22行参数(pass by value)修改成引用(pass by reference)的形式即可。
1 | void Bubble(std::vector<int> &vec1) |
修改以后,程序的结果为。
1 | vector before sort: |
##Exercise 2.3
1 | /* |
##Exercise 2.6
以template形式完成函数的重载。
鉴于2.5中传入的参数有不同的类型,因此,可以定义template带有不同类型参数的模板。
1 | //对于传入两个数的参数类型 |