今天重新实现了"同时求一个序列中的最大最小元"算法.和以前的实现对比了一下,
发现今天的实现要比以前的版本更具有可扩展性.但在新的实现中,由于没有对元素
间的比较操作参数化,感觉实现还不够好.想了想,原因是没有彻底理解函数对象,函
数指针等一些机制之间的区别,所以实现起来感觉有点找不到头脑.
重新阅读"C++ Primer"函数模板一章节,首先就遇到了下面的一个模板函数:
template
<
class
T,
int
size
>
T _min(T (
&
r_a)[size])
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
T min_val = r_a[0];
for (int i = 1; i < size; ++i)
if (min_val > r_a[i]) min_val = r_a[i];
return min_val;
}
发现今天的实现要比以前的版本更具有可扩展性.但在新的实现中,由于没有对元素
间的比较操作参数化,感觉实现还不够好.想了想,原因是没有彻底理解函数对象,函
数指针等一些机制之间的区别,所以实现起来感觉有点找不到头脑.
重新阅读"C++ Primer"函数模板一章节,首先就遇到了下面的一个模板函数:
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
写了好几个测试代码,都没法通过,主要是自己没有对"T _min(T (&r_a)[size])"理
解透彻.虽然尔后理解了这玩意的意思和本质.但这件事情对自己的冲击和启发却
"让人心头难以平静".
记得大二开始学习C++的时候,就买了C++之父Bjarne Stroustrup的"The C++
Programming Language"一书.当时像狗啃石头一样,无奈而坚毅的往下看着.但确犯
了一些低级错误!
"The C++ Programming Language"作为高级读物根本就不适合初学者啃.现在想起来
当时要是选一本比较容易入门书,如"C++ Primer",当时的学习效率应该提高很多!
"C++是C的扩展".当时自己压根就没有把这至理名言放在心上.觉得自己对C的理解是
很透彻,就没有对基础的一些语言设施放一丁点心思,所以才会出现今天这样尴尬的
问题!
"态度决定一切".所有的问题的本源都由"态度"二字而起.当时的自己,以及自那开始
的很长一段时间里,自己,太:浮躁,自矜