c++学习心得:STL初学(基础篇)
2019-03-28 17:22
85 查看
标准函数库(STL)学习心得(基础篇)
STL主要由两种组件构成:一是容器,包括vector、list、set、map等类;另一种组件是用以操作这些容器的所谓的泛型算法包括find()、sort()等。
容器又分为两种:
1、顺序型容器:vector和list,顺序型容器会依次遍历第一个、第二个、·········、直到最后一个元素,我们在顺序型容器主要进行迭代(iterate)操作
2、关联容器:map、set,关联容器更容易帮助我们快速查找容器中的元素值。map是一对key/value组合,key用于查找,value用来表示我们要储存或取出的数据。而set仅含有key,我们对它进行查询操作为的是判断一个值是否存在其中。
另一种为泛型算法:
泛型算法提供了许多可作用于容器类以及数组类型上的操作。所谓泛型,就是与被操作的元素的类型无关(不用关心元素的类型是int、double还是string),它们同样与容器类独立(不论是vector、list还是array)。
泛型算法借助一对iterator(first和last),标识我们要进行的迭代的范围,如果first=last,算法只作用于first所指元素,如果first不等于last,指针便首先作用于first所指元素,并将first递增,再将frist和last比较相等,如此持续下去,知道first等于last。
现在需要进行下面工作。给定一个储存整数的vector,以及一个整数值。如果此值存在于vector内,返回一个指针指向该值,否则返回0,表示此值不在vector内
int *find(vector<int> &ivec,int value) { for(int i=0;i<ivec.size();i++) { if(ivec[i]==value) return &ivec[i]; } return 0; }
现在需要这个函数能够处理所有类型,前提该类型有定义的相等运算符
template<class T> T *find(vector<T> &tvec,T value) { for(int i=0;i<tvec.size();i++) { if(tvec[i]==value) return &tvec[i]; } return 0; }
相关文章推荐
- 初学c++经验学习心得入门篇 老鸟飘过
- 【用法详解】C++-STL 队列queue与优先队列priority_queue的用法详解与学习心得
- 【用法详解】C++--STL之map的用法详解与学习心得
- c++ stl学习—优先队列
- C/C++ 多线程学习心得
- C++ STL模板与容器 知识 初学 小结 ( 二 )
- 我的C++ 学习心得
- 算法学习——搜索和C++ STL 实现全排列和去重全排列
- 学习笔记---C++析构函数心得
- C++ STL学习笔记四 list双向链表容器
- C++MFC学习心得(三)——PostNcDestroy,~MainWnd(),OnDestroy(),~CWinApp()的区别。。。
- 初学者必读:如何学习VC++和C++及其推荐书目和网站
- C++ STL 学习
- Google C++ Style Guide学习心得
- 学习C++心得与值得一看的书
- C++之Effective STL学习笔记Item7
- C++ STL学习之三:序列式容器deque深入学习
- C++ STL学习之五:配接器stack深入学习
- C++学习心得【0】----准备
- C++ 学习笔记:STL 容器一些底层机制