下面说的只是个人对STL的认识。
不得不说,STL确实让数据结构的运用变得很简便。但我看来是有利有弊的。
先说好处,经过STL封装过的数据结构,使用起来更加方便快捷。很多次网络赛,用map,set可以很快解决一些农夫山泉题。用指针实现的链表,队列,栈等等,实现一个功能要写一个函数,但STL中一句话就可以。重点还在于,当我们陌生的去接触STL,必然会查阅相关资料。同时,我们也可以换一个角度,对被封装的数据结构有新的认识,也有利于我们深入研究其中的精髓。比如,map和set本质是红黑树,那什么有是红黑树呢?再比如,可以重载运算符把map的按键排序改为按值排序,在结构体定义一个新方向,其实map实质也是结构体。由此我们可以学到更多,有更深的体会。
重点在弊端。虽然好用,但不能中毒太深。如果所有东西都是封装好的,那还要那呢多技术人员干什么。安于用模板,愿意研究精髓的就越来越少了,数据结构的灵魂也就不存在了。考研考察的是基本的数据结构。虽然涉世未深,但了解到一些大公司的面试题很多是数据结构为主。所以,不能沉迷于模板。很多东西好用,但不是自己的
革命尚未成功!
不得不说,STL确实让数据结构的运用变得很简便。但我看来是有利有弊的。
先说好处,经过STL封装过的数据结构,使用起来更加方便快捷。很多次网络赛,用map,set可以很快解决一些农夫山泉题。用指针实现的链表,队列,栈等等,实现一个功能要写一个函数,但STL中一句话就可以。重点还在于,当我们陌生的去接触STL,必然会查阅相关资料。同时,我们也可以换一个角度,对被封装的数据结构有新的认识,也有利于我们深入研究其中的精髓。比如,map和set本质是红黑树,那什么有是红黑树呢?再比如,可以重载运算符把map的按键排序改为按值排序,在结构体定义一个新方向,其实map实质也是结构体。由此我们可以学到更多,有更深的体会。
重点在弊端。虽然好用,但不能中毒太深。如果所有东西都是封装好的,那还要那呢多技术人员干什么。安于用模板,愿意研究精髓的就越来越少了,数据结构的灵魂也就不存在了。考研考察的是基本的数据结构。虽然涉世未深,但了解到一些大公司的面试题很多是数据结构为主。所以,不能沉迷于模板。很多东西好用,但不是自己的
在比赛中,我们必须要掌握STL,速度快使用便捷。但我们更不能把对数据结构的认识局限于此。模板永远是模板。
革命尚未成功!