C++|C++ 标准模板类详解
目录
- 1 标准模板库
- 2.泛型编程
- 总结
1 标准模板库 STL提供了表示容器、迭代器、函数对象和算法的模板。
- 容器:类似数组存储若干值,切实同质的;
- 迭代器:遍历容器的对象,类似遍历数组的指针,广义指针;
- 算法:完成特定的任务;
- 函数对象:类对象或函数指针。
erase() 删除矢量中给定区间元素。接受两个迭代器参数(该参数定义了要删除的区间),迭代器1指向区间起始处,迭代器2指向区间终止处的后一个位置。
// delete first and second elementsdata.erase(data.begin(), data.begin() + 2);
insert() 与erase() 功能相反。接受三个迭代器参数。param1 指定新元素插入位置,param2 和 param3 定义别插入的区间(通常是其他对象)。
// insert [old.begin + 1, old.end) in the front of datadata.insert(data.begin(), old.begin() + 1, old.end()); // 此时,超尾元素显得十分方便// 在末尾紧挨着插入元素data.insert(data.end(), old.begin() + 1, old.end());
for_each() 接受三个参数。param1 和 param2 是定义容器中区间的迭代器,param3 指向函数的指针(函数对象)。将被指向的函数(param3)用于区间 [param1, param2) 的各个元素。但是被指向的函数 param3 不可以修改区间的值。
// 代替for循环for(auto iter = data.begin(); iter != data.end(); iter++) {showData(*iter); }// replace for with for_each// 注意此处的函数showData不能修改data的值。for_each(data.begin(), data.end(), showData);
sort() 排序函数。
1)接受2个区间的迭代器参数,对元素利用<运算符进行操作。
2)接受3个参数,前两个指定区间的迭代器,最后一个指向要是有的函数指针(对象)。这里的函数类似仿函数特性,但是形式不同于仿函数。
区分全排列(total ordering)和完整弱排序(strict weak ordering)。
// usage 1sort(data.begin(), data.end()); // usage 2bool compare(const structData& a, const structData& b) {if(a.index == b.index) {return a.data < b.data; }return a.index < b.index; }// sort with index from little to big, if index is equal, sort with data.sort(data.begin(), data.end(), compare);
基于范围 for 循环。不同于 for_each,基于范围的for循环可以修改容器的内容。
2.泛型编程 泛型编程旨在编写独立于数据结构的代码(即编写一套可以适用于所有数据结构的函数代码)。模板可以按照泛型定义函数或者类。
总结 【C++|C++ 标准模板类详解】本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
推荐阅读
- opencv|opencv C++模板匹配的简单实现
- C语言学习|第十一届蓝桥杯省赛 大学B组 C/C++ 第一场
- 活跃社群的核心标准是什么()
- web网页模板|如此优秀的JS轮播图,写完老师都沉默了
- c++基础概念笔记
- 今日份H5
- 3.css浮动
- 选老公的标准障碍了我看男盆友的眼
- 通过复盘快速成长(附模板)
- 世界脑力锦标赛官方公布2018年世界记忆大师新评定标准!