当前位置: 首页 > news >正文

上海网站建设 上海网站制作昆山网站推广

上海网站建设 上海网站制作,昆山网站推广,石家庄网站建设咨询,中国智媒体融合发展报告发布几种模板首先认识一下函数模板、类模板、栈模板。函数模板函数模板就是一个模型#xff0c;而模板函数是函数模板经过类型实例化的函数。如下templateclass T是一个简单的函数模板#xff1a;templateclass T T Max(T a, T b) {return a b ? a : b; } …几种模板首先认识一下函数模板、类模板、栈模板。函数模板函数模板就是一个模型而模板函数是函数模板经过类型实例化的函数。如下templateclass T是一个简单的函数模板templateclass T T Max(T a, T b) {return a b ? a : b; } int main() {cout Max(2, 5) endl;//与Max匹配的函数叫模板函数cout Max(t, a) endl;//使用模板不受限于它的类型 }也可以一次定义几个不同类型templateclass T1, class T2 void fn(T1 a, T2 b) {cout a b endl; } void main() {fn(a, 5); }类模板类模板不是类需要经过参数实例化之后才是可以用的类创建对象的时候告诉类模板类型templateclass T class A { public:A(int i0):m_i(i){}void print() { cout m_i endl; } private:T m_i }; int main() {//A a;//errAint a(10);//这样经过参数实例化之后才是可以用的类a.print(); }使用栈模板自己模拟栈要很长一段代码#define SIZE 10 templateclass T class SeqStack { public:SeqStack(){m_capacity SIZE;m_data new T[m_capacity];m_top -1;}~SeqStack(){delete[]m_data;m_data nullptr;}void Push(int v){if (IsFull())return;m_data[m_top] v;}void Pop(){if (IsEmpty()){return;}m_top--;}bool IsEmpty(){return m_top -1;}bool IsFull(){return m_top m_capacity - 1;}int GetTop() //要优化{if (IsEmpty())return 0;return m_data[m_top];} private:T* m_data;int m_top;int m_capacity; }; int main() {SeqStackint ss;ss.Push(1);ss.Push(2);ss.Push(3);while (!ss.IsEmpty()){cout ss.GetTop() ;ss.Pop();} }栈模板就可以直接用带上头文件#includestack很方便效果跟自己模拟是一样的int main() {stackint ss;ss.push(1);ss.push(2);ss.push(3);while (!ss.empty()){cout ss.top() endl;ss.pop();} }STL 标准模板库STL的重要的组件容器、算法、迭代器容器存放数据算法操作数据迭代器容器和算法之间的粘合器——通过迭代器把容器里的东西取出给算法操作指针STL是泛型程序库所有组件可以针对任意型别运作。使用例从标准输入读取一段整数将这些整数存放在一个动态开辟的数组中数组的第一个元素存储整数的个数以后依次是这些整数。void main() {vectorint vv;copy(istream_iteratorint(cin), istream_iteratorint(),back_insert_iteratorvectorint(vv));copy(vv.begin(), vv.end(), ostream_iteratorint(cout, )); }容器•容器用来管理某类对象的集合。容纳特定数据类型对象的集合,STL容器是将最常用的一些数据结构实现出来.包含了许多数据结构,如:vector,queue,statck…,string也可以看作是一个容器.•分类:容器用来管理一组元素为了适应不同需要STL根据数据在容器中排列的特性,容器可分为序列式容器和关联式容器两种.•序列式容器:可序群集其中每个元素都有固定位置——取决于插入时机和地点,与元素的值没有关系,如果你以追加方式对一个群集置入n个元素它们的排列次序将和置入次序一致。如vector,deque,list•关联式容器:已序群集元素位置取决于特定的排序准则,和插入顺序无关。如果你将n个元素置入这样的群集中它们的位置取决于元素值和插入次序无关。STL提供了4个这样的容器set,map。multisetmultimap。 关联式容器也可被视为特殊的序列式容器因为已序群集正是根据某个排序准则排列而成。vector容器向量Vector是一个封装了动态大小数组的顺序容器Sequence Container。跟任意其它类型容器一样它能够存放各种类型的对象。可以简单的认为向量是一个能够存放任意类型的动态数组。vector:将其元素置于一个动态数组中加以管理是一种动态数组是基本数组的类模板用于代替数组支持随机存取。int main() {vectorint v;//v里面的构造方法vectorint v1(5);//5个0vectorint v2(4, 7);//4个7int arr[5] { 1,2,3,4,5 };vectorint v3(arr,arr5);//12345for (int i 0; i v2.size(); i)cout v2[i] ;cout endl;v.push_back(1);v.push_back(2);v.push_back(40);v.push_back(3);for (int i 0; i v.size(); i)cout v[i] ;cout endl; }普通二维数组必须定义列数如a[][3]但vector的每行列数可以不一样void main() {vectorint v;vectorvectorint vv;//vv相当于一个二维数组v.push_back(1);//1vv.push_back(v);//1v.push_back(2);//1 2vv.push_back(v); //1 //1 2v.push_back(3);//1 2 3vv.push_back(v); //1 //1 2 //1 2 3for (int i 0; i vv.size(); i){for (int j 0; j vv[i].size(); j)cout vv[i][j] ;cout endl;} }vector定义后不能直接赋值必须有东西存进去再修改void main() {vectorint v;//v.resize(5);v[0] 5; //这相当于下面这两行是不行的//int a;//a[0] 6; }算法•算法用来处理群集内的元素。它们可以出于不同的目的而搜寻排序修改使用那些元素。是一种应用在容器上以各种方法处理其内存的行为或功能,如sort(排序),copy(拷贝)…,算法由模板函数体现,这些函数不是容器类的成员函数是独立的函数,它们可以用于STL容器,也可以用于普通的C数组等.•头文件#includealgorithm在STL的泛型算法中有4类基本的算法•1)变序型队列算法: 可以改变容器内的数据•2)非变序型队列算法:处理容器内的数据而不改变他们•3)排序值算法:包涵对容器中的值进行排序和合并的算法还有二叉搜 索算法 ,•4)通用数值算法此种算法不多涉及到专业领域中有用的算术操作独立包涵于头文件numeric中在此不多做解释排序sort()使用必须加上头文件#includealgorithm。sort默认是做非递减排序用的类模板这个自己也可以模拟如下自己也可以写个函数传入sort使其做非递增排序。bool great(int a, int b) {return a b; } templateclass T class Great { public:bool operator()(T a, T b){return a b;} }; void main() {int a[] { 1,3,2,5,4,7,6,9,8,0 };int n sizeof(a) / sizeof(a[0]);//sort(a, a n,greaterint());//sort(a, a n, great);//函数模板用函数名当做函数指针传入sort(a, a n, Greatint());//类模板运用了的重载for (int i 0; i n; i)cout a[i] ;cout endl; }遍历for_each()for_each()函数是C STL中的一个遍历函数函数原型如下 for_each(InputIterator first, InputIterator last, Function functor); 拷贝copy()复制 [first, last) 所定义的范围中的元素到始于 d_first 的另一范围。函数原型templateclass InputIterator, class OutputIterator inline OutputIterator copy( InputIterator first, InputIterator last, OutputIterator result );for_each()和copy()的使用void print(int n) {cout n ; } int s 0; void Sum(int n) {s s n; } void main() {int a[5] { 1,2,3,4,5 };int b[5];copy(a, a 5, b);//把[a,an)复制到b// copy(b, b 5, ostream_iteratorint(cout, ,));for_each(b, b 5, print);//输出12345for_each(b, b 5, Sum);//输出15cout s s endl; }反转函数reverse将区间[iterator1,iterator2)内的元素反转交换swap_ranges函数原型templatetypename T1, typename T2void swap(std::pairT1,T2 left, std::pairT1,T2 right);前两个参数分别是第一个序列的开始和结束迭代器第三个参数是第二个序列的开始迭代器。显然这两个序列的长度必须相同。这个算法会返回一个迭代器它指向第二个序列的最后一个被交换元素的下一个位置。使用bool great5(int n) {return n 5; } templateclass T class Less5 { public:bool operator()(T n){return n 5;} }; void main() {int a[] { 1,2,3,4,5 };int b[] { 6,7,8,9,0 };int n sizeof(a) / sizeof(a[0]);int* p find(a, a n, 15);cout *(p - 1) endl;p find_if(a, a n, great5);cout *p endl;p find_if(a, a n, Less5int());cout *p endl;reverse(a, a n);swap_ranges(a, a 3, b);cout count(a, a 5, 2) endl;cout count_if(a, a 5, Less5int()) endl; }判断包含关系includes函数原型template class InputIterator1, class InputIterator2, class Comparebool includes ( InputIterator1 first1, InputIterator1 last1,InputIterator2 first2, InputIterator2 last2, Compare comp );测试 [first1,last1)里面是否包含了[first2,last2)里面的所有元素。int main(void) {int a[10] { 12,0,5,3,6,8,9,34,32,18 };int b[5] { 5,3,6,8,9 };int d[15];sort(a, a 10);for (int i 0; i 10; i)cout a[i];sort(b, b 5); // 3 5 6 8 9if (includes(a, a 10, b, b 5)) //一个数组是否包含另外一个数组cout \n sorted b members are included in a. endl;elsecout sorted a dosnt contain sorted b!;merge(a, a 10, b, b 5, d); //合并for (int j 0; j 15; j)cout d[j];return 0; }归并排序mergemerge只有归并部分使用它必须是两个有序数组经行归并先用sort()排序void main() {int a[5] { 5,4,1,2,3 };int b[5] { 6,8,1,4,6 };int c[10];sort(a, a 5);sort(b, b 5);merge(a, a 5, b, b 5, c); }
http://www.hkea.cn/news/14482062/

相关文章:

  • 做简历用的网站大学思政类网站建设
  • 社科联网站建设情况汇报网站开发是自己开发还是外包的
  • 官方网站建设的必要建立网站英文
  • 刷赞网站推广软件手机网站建设电话
  • 网站代理加盟企业网络规划设计与实现
  • 网站开发进度源码做网站前产品经理要了解什么
  • 上海市网站建设电话号码湖北建设厅考试网站
  • 太仓网站开发上海外贸公司27号
  • 建设视频网站流量网站建设v5star
  • wordpress 仿站命令有没有什么专门做兼职的网站吗
  • 云服务器怎么做多个网站网页设计代码html模版
  • 没有版权可以做视频网站吗公司网站建设深
  • 商城网站建设如何网站开发公司架构
  • 自己电脑做网站服务器小工具主机屋网站空间的IP
  • 纯静态网站 后台计算机网页设计实训报告
  • 10月哪个网站做电影票活动网站丢失怎么解决
  • 东莞网站推广的公司电子商务网站系统规划报告
  • 如何在服务器上搭建网站深圳外贸网站建设设计公司
  • 怎样查询网站建设时间学设计哪个专业好
  • 做海报的素材哪个网站软件项目网站建设实验报告
  • 外贸网站 建站免费下载优化大师
  • 安庆公司做网站wordpress绕绕
  • 烟台百度网站建设如何用电脑主机做网站
  • 贵州专业网站建设费用wordpress2级目录伪静态
  • phpstudy做正式网站关于宠物的网站模板
  • 装饰设计网站大全西安网站制作平台
  • 成都络迈品牌网站建设二级网站域名
  • 肇庆做网站哪家好灵山招聘网灵山英才网做灵山专业的招聘网站
  • 海南网站建设监理wordpress阿里云配置文件
  • 中国正规现货交易平台win7优化大师