
C++
zxy131072
嵌入式linux
展开
-
容器list基本概念
功能 将数据进行链式存储链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的链表的组成:链表由一系列结点组成结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域STL中的链表是一个双向循环链表由于链表的存储方式并不是连续的内存空间,因此链表list中的迭代器只支持前移和后移,属于双向迭代器list的优点:...原创 2019-07-04 16:59:05 · 574 阅读 · 0 评论 -
set和multiset区别
区别:set不可以插入重复数据,而multiset可以set插入数据的同时会返回插入结果,表示插入是否成功multiset不会检测数据,因此可以插入重复数据测试代码#include <iostream>using namespace std;#include <set>//set和multiset区别void test01(){ set<...原创 2019-07-04 17:04:51 · 1282 阅读 · 0 评论 -
STL模板示例------员工分组
案例-员工分组案例描述公司今天招聘了10个员工(ABCDEFGHIJ),10名员工进入公司之后,需要指派员工在哪个部门工作员工信息有: 姓名 工资组成;部门分为:策划、美术、研发随机给10名员工分配部门和工资通过multimap进行信息的插入 key(部门编号) value(员工)分部门显示员工信息实现步骤创建10名员工,放到vector中遍历vector容器,取出每个...原创 2019-07-05 11:37:16 · 429 阅读 · 0 评论 -
函数对象
函数对象概念概念:重载函数调用操作符的类,其对象常称为函数对象函数对象使用重载的()时,行为类似函数调用,也叫仿函数本质:函数对象(仿函数)是一个类,不是一个函数函数对象使用特点:函数对象在使用时,可以像普通函数那样调用, 可以有参数,可以有返回值函数对象超出普通函数的概念,函数对象可以有自己的状态函数对象可以作为参数传递测试代码#include<iostre...原创 2019-07-05 11:37:32 · 135 阅读 · 0 评论 -
谓词
谓词概念:返回bool类型的仿函数称为谓词如果operator()接受一个参数,那么叫做一元谓词如果operator()接受两个参数,那么叫做二元谓词#测试代码#include<iostream>using namespace std;#include <vector>#include <algorithm>//1.一元谓词struc...原创 2019-07-05 11:37:46 · 1218 阅读 · 2 评论 -
内建函数对象
内建函数对象内建函数对象意义概念:STL内建了一些函数对象分类:算术仿函数关系仿函数逻辑仿函数用法:这些仿函数所产生的对象,用法和一般函数完全相同使用内建函数对象,需要引入头文件 #include<functional>4.3.2 算术仿函数功能描述:实现四则运算其中negate是一元运算,其他都是二元运算仿函数原型:template&...原创 2019-07-05 11:37:53 · 365 阅读 · 0 评论 -
常用的遍历算法
概述:算法主要是由头文件<algorithm> <functional> <numeric>组成。<algorithm>是所有STL头文件中最大的一个,范围涉及到比较、 交换、查找、遍历操作、复制、修改等等<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数<functional>...原创 2019-07-05 11:38:04 · 4841 阅读 · 0 评论 -
C++函数模板的基本使用
函数模板语法函数模板作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。语法:template<typename T>函数声明或定义解释:template — 声明创建模板typename — 表示其后面的符号是一种数据类型,可以用class代替T — 通用的数据类型,名称可以替换,通常为大写字母测试代码#i...原创 2019-07-01 13:52:36 · 924 阅读 · 0 评论 -
函数模板注意事项
注意事项自动类型推导,必须推导出一致的数据类型T,才可以使用模板必须要确定出T的数据类型,才可以使用测试代码#include <iostream>#include <string>using namespace std;//利用模板提供通用的交换函数template<class T>void mySwap(T& a, T&...原创 2019-07-01 14:01:02 · 438 阅读 · 0 评论 -
set查找和统计
功能描述:对set容器进行查找数据以及统计数据函数原型:find(key); //查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end();count(key); //统计key的元素个数测试代码#include <iostream>using namespace std...原创 2019-07-04 17:04:38 · 3483 阅读 · 1 评论 -
set插入和删除
功能描述:set容器进行插入数据和删除数据函数原型:insert(elem); //在容器中插入元素。clear(); //清除所有元素erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器。erase(beg, end); //删除区间[beg,end)的所有元素 ...原创 2019-07-04 17:04:23 · 6262 阅读 · 1 评论 -
set大小和交换
功能描述:统计set容器大小以及交换set容器函数原型:size(); //返回容器中元素的数目empty(); //判断容器是否为空swap(st); //交换两个集合容器测试代码#include <iostream>using namespace std;#include <set>void p...原创 2019-07-04 17:04:01 · 1214 阅读 · 0 评论 -
list构造函数
功能描述:创建list容器函数原型:list<T> lst; //list采用模板类实现对象的默认构造形式:list(beg,end); //构造函数将[beg, end)区间中的元素拷贝给本身。list(n,elem); ...原创 2019-07-04 16:59:45 · 2195 阅读 · 0 评论 -
list 赋值和交换
功能描述:给list容器进行赋值,以及交换list容器函数原型:assign(beg, end); //将[beg, end)区间中的数据拷贝赋值给本身。assign(n, elem); //将n个elem拷贝赋值给本身。list& operator=(const list &lst); //重载等号操...原创 2019-07-04 17:00:30 · 690 阅读 · 0 评论 -
list 大小操作
功能描述:对list容器的大小进行操作函数原型:size(); //返回容器中元素的个数empty(); //判断容器是否为空resize(num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。 ...原创 2019-07-04 17:01:04 · 3008 阅读 · 0 评论 -
list 插入和删除
功能描述:对list容器进行数据的插入和删除函数原型:push_back(elem);//在容器尾部加入一个元素pop_back();//删除容器中最后一个元素push_front(elem);//在容器开头插入一个元素pop_front();//从容器开头移除第一个元素insert(pos,elem);//在pos位置插elem元素的拷贝,返回新数据的位置。insert(p...原创 2019-07-04 17:01:44 · 8916 阅读 · 0 评论 -
list 数据存取
功能描述:对list容器中数据进行存取函数原型:front(); //返回第一个元素。back(); //返回最后一个元素。测试代码#include <iostream>using namespace std;#include <list>//数据存取void test01(){ list<int>...原创 2019-07-04 17:02:05 · 1042 阅读 · 0 评论 -
list 反转和排序
功能描述:将容器中的元素反转,以及将容器中的数据进行排序函数原型:reverse(); //反转链表sort(); //链表排序测试代码#include <iostream>using namespace std;#include <list>void printList(const list<int>& ...原创 2019-07-04 17:02:25 · 4368 阅读 · 0 评论 -
list 排序案例
案例描述:将Person自定义数据类型进行排序,Person中属性有姓名、年龄、身高排序规则:按照年龄进行升序,如果年龄相同按照身高进行降序测试代码#include <iostream>using namespace std;#include <list>#include <string>class Person {public: Pers...原创 2019-07-04 17:03:21 · 238 阅读 · 0 评论 -
set/ multiset 容器基本使用
set基本概念简介:所有元素都会在插入时自动被排序本质:set/multiset属于关联式容器,底层结构是用二叉树实现。set和multiset区别:set不允许容器中有重复的元素multiset允许容器中有重复的元素3.8.2 set构造和赋值功能描述:创建set容器以及赋值构造:set<T> st; ...原创 2019-07-04 17:03:42 · 300 阅读 · 0 评论 -
函数模板案例
案例描述利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序排序规则从大到小,排序算法为选择排序分别利用char数组和int数组进行测试测试代码#include <iostream>#include <string>using namespace std;//交换的函数模板template<typename T>void my...原创 2019-07-01 14:04:26 · 409 阅读 · 0 评论 -
普通函数与函数模板的区别
普通函数与函数模板区别普通函数调用时可以发生自动类型转换(隐式类型转换)函数模板调用时,如果利用自动类型推导,不会发生隐式类型转换如果利用显示指定类型的方式,可以发生隐式类型转换测试代码#include <iostream>#include <string>using namespace std;//普通函数int myAdd01(int a, in...原创 2019-07-01 14:10:08 · 284 阅读 · 0 评论 -
普通函数与函数模板的调用规则
规则:如果函数模板和普通函数都可以实现,优先调用普通函数可以通过空模板参数列表来强制调用函数模板函数模板也可以发生重载如果函数模板可以产生更好的匹配,优先调用函数模板测试代码:#include <iostream>#include <string>using namespace std;//普通函数与函数模板调用规则void myPrint(int...原创 2019-07-01 14:14:41 · 1907 阅读 · 0 评论 -
拷贝算法——copy
拷贝算法——copy功能描述:容器内指定范围的元素拷贝到另一容器中函数原型:copy(iterator beg, iterator end, iterator dest);// 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置// beg 开始迭代器// end 结束迭代器// dest 目标起始迭代器测试代码#include <iostre...原创 2019-07-06 19:00:41 · 713 阅读 · 0 评论 -
替换算法——replace
替换算法——replace功能描述:将容器内指定范围的旧元素修改为新元素函数原型:replace(iterator beg, iterator end, oldvalue, newvalue);// 将区间内旧元素 替换成 新元素// beg 开始迭代器// end 结束迭代器// oldvalue 旧元素// newvalue 新元素测试代码#include &...原创 2019-07-06 19:02:20 · 734 阅读 · 0 评论 -
替换算法——replace_if
替换算法——replace_if功能描述:将区间内满足条件的元素,替换成指定元素函数原型:replace_if(iterator beg, iterator end, _pred, newvalue);// 按条件替换元素,满足条件的替换成指定元素// beg 开始迭代器// end 结束迭代器// _pred 谓词// newvalue 替换的新元素测试代码#i...原创 2019-07-06 19:04:10 · 1073 阅读 · 0 评论 -
交换算法——swap
交换算法——swap功能描述:互换两个容器的元素函数原型:swap(container c1, container c2);// 互换两个容器的元素// c1容器1// c2容器2测试代码#include <iostream>using namespace std;#include <algorithm>#include <ve...原创 2019-07-06 19:06:00 · 683 阅读 · 0 评论 -
算术生成算法——accumulate
算术生成算法——accumulate功能描述:计算区间内 容器元素累计总和函数原型:accumulate(iterator beg, iterator end, value);// 计算容器元素累计总和// beg 开始迭代器// end 结束迭代器// value 起始值测试代码#include <iostream>using namespace ...原创 2019-07-06 19:08:03 · 557 阅读 · 0 评论 -
算术算法——fill
算术算法——fill功能描述:向容器中填充指定的元素函数原型:fill(iterator beg, iterator end, value);// 向容器中填充元素// beg 开始迭代器// end 结束迭代器// value 填充的值测试代码#include <iostream>using namespace std;#include <...原创 2019-07-06 19:09:44 · 481 阅读 · 0 评论 -
集合算法求交集——set_intersection
集合算法求交集——set_intersection功能描述:求两个容器的交集函数原型:set_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);// 求两个集合的交集// 注意:两个集合必须是有序序列// beg1 容器1开始迭代器// end1 容...原创 2019-07-06 19:11:40 · 2762 阅读 · 1 评论 -
集合算法就并集——set_union
集合算法就并集——set_union功能描述:求两个集合的并集函数原型:set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);// 求两个集合的并集// 注意:两个集合必须是有序序列// beg1 容器1开始迭代器// end1 容器1结束迭代器// beg...原创 2019-07-06 19:13:27 · 1327 阅读 · 0 评论 -
排序算法——reverse
排序算法——reverse功能描述:将容器内元素进行反转函数原型:reverse(iterator beg, iterator end);// 反转指定范围的元素// beg 开始迭代器// end 结束迭代器测试代码#include <iostream>using namespace std;#include <algorithm>...原创 2019-07-06 18:58:11 · 472 阅读 · 0 评论 -
排序算法——merge
排序算法——merge功能描述:两个容器元素合并,并存储到另一容器中函数原型:merge(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);// 容器元素合并,并存储到另一容器中// 注意: 两个容器必须是有序的// beg1 容器1开始迭代器// end1 容器1结...原创 2019-07-06 18:56:14 · 1562 阅读 · 0 评论 -
排序算法——random_shuffle
排序算法——random_shuffle功能描述:洗牌 指定范围内的元素随机调整次序函数原型:random_shuffle(iterator beg, iterator end);// 指定范围内的元素随机调整次序// beg 开始迭代器// end 结束迭代器测试代码#include <iostream>using namespace std;...原创 2019-07-06 18:54:01 · 2212 阅读 · 0 评论 -
模板的局限性
局限性模板的通用性并不是万能的例如: template<class T> void f(T a, T b) { a = b; }在上述代码中提供的赋值操作,如果传入的a和b是一个数组,就无法实现了再例如: template<class T> void f(T a, T b) { if(a > b) { ... ...原创 2019-07-01 14:17:10 · 351 阅读 · 0 评论 -
查找算法——find
查找算法——find功能描述:查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器end()函数原型:find(iterator beg, iterator end, value);// 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置// beg 开始迭代器// end 结束迭代器// value 查找的元素测试代码#include <...原创 2019-07-06 18:35:05 · 347 阅读 · 0 评论 -
查找算法——find_if
查找算法——find_if功能描述:按条件查找元素函数原型:find_if(iterator beg, iterator end, _Pred);// 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置// beg 开始迭代器// end 结束迭代器// _Pred 函数或者谓词(返回bool类型的仿函数)测试代码#include <iostrea...原创 2019-07-06 18:38:24 · 478 阅读 · 1 评论 -
查找算法——adjacent_find
查找算法——adjacent_find功能描述:查找相邻重复元素函数原型:adjacent_find(iterator beg, iterator end);// 查找相邻重复元素,返回相邻元素的第一个位置的迭代器// beg 开始迭代器// end 结束迭代器测试代码#include <iostream>using namespace std;#...原创 2019-07-06 18:41:31 · 460 阅读 · 0 评论 -
查找算法—— binary_search
查找算法—— binary_search功能描述:查找指定元素是否存在函数原型:bool binary_search(iterator beg, iterator end, value);// 查找指定的元素,查到 返回true 否则false// 注意: 在无序序列中不可用// beg 开始迭代器// end 结束迭代器// value 查找的元素测试代码#i...原创 2019-07-06 18:44:18 · 562 阅读 · 0 评论 -
count算法
count算法功能描述:统计元素个数函数原型:count(iterator beg, iterator end, value);// 统计元素出现次数// beg 开始迭代器// end 结束迭代器// value 统计的元素测试代码#include <iostream>using namespace std;#include <algor...原创 2019-07-06 18:46:49 · 652 阅读 · 0 评论