• STL学习篇:“投机取巧”地学习


      这两天一直在学习STL,先大致说一下我的学习的方法:最初是大致看一遍STL的初级入门书,然后再过一遍网上大牛讲的视频,一边跟着操作,不懂的一般就在网上一直找!看看大牛发的帖子!基本学习方法就是这样啦,总的来说谁也不可能避免实际操作这一环节,因为我们都是要学以致用的!也许有人学习新知识比较快,可以不看视频之类的,这个我只想说自己根据自己的情况来定吧!不瞎扯啦,我也只只是一个小小的初学者,就说说这两天碰到的问题吧!

      大牛的视频中,每次都是要包含需要的头文件,然后就是选择合适的容器,进行初始化,输出,进而进行相应方法的讲述!基本就是这样一个流程,这里不是想说大牛的讲课方法有问题,这个绝对科学,因为每节课讲述的内容关联性不是很强,并且比如某人是初学者只是想了解一些章节,那么这个方法就适合任意一个人!大牛一直说,还可以加深记忆,刚开始学就这样听着确实挺好的!但是后来,因为这些操作都比较常规,基本已经熟练掌握了,就是打字速度跟不上大牛的节奏,所以在这些普通操作中得暂停一下,跟上节奏,心里小小略感不爽!所以,我就琢磨地将初始化数据操作打印输出操作,写成模板函数,放入自定义的头文件中,然后直接调用就是!下面是具体操作:

      对了,这里还得小小强调一下,这样确实用得爽,但是感觉肯定有人这样用过,并且这里应该有些门路!我自己就知道,这里涉及的知识点有C++程序编译方式、头文件的书写和调用等,自己用还行,但是当要写出来的时候就得注意,确实得注意了,这也是平时学习养成的良好学习习惯,而不是只是单纯为了写出来才去查看!这些知识点大家自己去科普哈,园中有大拿解释,我也收藏了几篇!大家有兴趣可以去看看!

      这里总结一下,以这样的方式写需要注意的问题:

    • c++语言支持“分别编译”到底是怎么回事
    • 头文件书写一般只放声明,但是有特殊情况,调用的时候怎么防止重复调用,具体应该怎么写等
    • 调用的时候写头文件的时候可能会碰到绝对路径相对路径的概念

      程序功能:以容器vector为例,实现插入1~9的数据,并输出:

      主函数如下:

     1 #include<algorithm>
     2 #include<functional>
     3 #include<iterator>
     4 //相对路径的写法,包含自定义的头文件
     5 #include"....includesmallTools.h"
     6 
     7 using namespace std;
     8 
     9 int main()
    10 {
    11     vector<int> ivec;
    12 
    13     InitData(ivec, 1, 9);
    14 
    15     print(ivec);
    16 
    17     return 0;
    18 }

      头文件的具体实现:

     1 #ifndef WaHaHa
     2 #define WaHaHa
     3 //使用头文件保护符来防止重复包含
     4 #include<iostream>
     5 #include<vector>
     6 
     7 template <typename elementType>
     8 void print(elementType& elem)
     9 {
    10     for (elementType::iterator iter = elem.begin(); iter != elem.end(); ++iter)
    11     {
    12         cout << *iter << " ";
    13     }
    14     cout << endl;
    15 }
    16 
    17 template <typename elementType>
    18 void InitData(elementType& elem, int b, int e)
    19 {
    20     //初始化插入数据
    21     for (int i = b; i <= e; ++i)
    22     {
    23         elem.push_back(i);
    24     }
    25 }
    26 
    27 #endif
    头文件的实现

      因为这里涉及的是模板函数,所以就直接将函数方法的实现也放进来啦!我还想着如果只是学习的话,在头文件的包汉中将常用的几个容器头文件都写进来,省的主函数里面再去写,因为我们初学者写的程序比较小而不是特别复杂!这个确实方便,但是心里老是感觉怪怪的。。。

      程序运行结果及文件分布截图:

      好了,上述所说的也需要大家灵活应用,比如说上面的插入数据实际上是用push_back方法实现,有时候需要insert方法或者push_front方法,那大家就需要更改或者再定义一个函数!就举这一个例子,其余不完善的也是一样,自行解决哈!基本想说的也就这么多啦!如果上述描述哪里有问题,请大家在下方评论指出,谢谢!!!

    (*^__^*) 嘻嘻……3W,My life,My way,My style!!!
  • 相关阅读:
    three之位置检查
    Cesium之屏蔽光照方向受时间的影响
    H5实现聚合支付及踩坑 广东靓仔
    聚合支付设计方案 广东靓仔
    nuxt.js使用vuei18n实现多语言,SSR 广东靓仔
    17. 电话号码的字母组合(dfs)
    sql 笔记
    215. 数组中的第K个最大元素(快排,堆排序)
    c++ print rapidjson
    堆排序
  • 原文地址:https://www.cnblogs.com/lijiangjiang/p/4740069.html
Copyright © 2020-2023  润新知