苞米面C++模板库,无需编译,直接包含头文件就可以。所有模板类和算法都包含在bmm名字空间里,例如:bmm::recent。需要C++编译器,支持C++17标准,只依赖C++STL标准模板库。
依赖C++STL标准模板库
使用说明详细情况查看doc/html里的文档。
示例代码
#include<iostream>#include<vector>#include"bmm/recent.hpp"#include"bmm/algo.hpp"intmain(intargc,constchar*argv[]){bmm::recent<int>rec={1,2,3,4,5,6,7,8,9,10};std::cout<<"recentexamplebegin"<<std::endl;std::cout<<"beforerecent:";for(autoi:rec)std::cout<<i<<"";std::cout<<std::endl;rec.push(50);std::cout<<"push50"<<std::endl;std::cout<<"afterrecent:";for(autoi:rec)std::cout<<i<<"";std::cout<<std::endl;std::cout<<"recentexampleend"<<std::endl;std::cout<<std::endl;std::cout<<"algoexamplebegin"<<std::endl;std::vector<int>vec={1,2,3,4,5,6,7,8,9,10};intn=3;if(bmm::is_in(vec,n))std::cout<<"is_in:"<<n<<"isinvec"<<std::endl;elsestd::cout<<"is_in:"<<n<<"isnotinvec"<<std::endl;intk=10;intadd=50;std::cout<<"if_inbefore:";for(autoi:vec)std::cout<<i<<"";std::cout<<std::endl;bmm::if_in(vec,k,[add](int&i){i+=add;});std::cout<<"if_in"<<k<<"+="<<add<<":";for(autoi:vec)std::cout<<i<<"";std::cout<<std::endl;std::cout<<"algoexampleend"<<std::endl;return0;}结果
recentexamplebeginbeforerecent:10987654321push50afterrecent:501098765432recentexampleendalgoexamplebeginis_in:3isinvecif_inbefore:12345678910if_in10+=50:12345678960algoexampleend功能说明所有模板类和算法都包含在bmm名字空间里,例如:bmm::recent
模板类名称文件说明recent<bmm/recent.hpp>最近使用的元素,类似于最近使用的文件算法名称文件说明is_in<bmm/algo.hpp>判断value是否在容器中if_in<bmm/algo.hpp>如果value在容器中则,调用函数__func并返回true,否则返回false开源协议MulanPSL-2.0
项目地址GITEE https://gitee.com/cnhemiya/bmm-cpp
评论