您的位置:首页 > 其它

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

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

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

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

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

c++语言支持“分别编译”到底是怎么回事

头文件书写一般只放声明,但是有特殊情况,调用的时候怎么防止重复调用,具体应该怎么写等

调用的时候写头文件的时候可能会碰到绝对路径相对路径的概念

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

  主函数如下:

#include<algorithm>
#include<functional>
#include<iterator>
//相对路径的写法,包含自定义的头文件
#include"..\..\include\smallTools.h"

using namespace std;

int main()
{
vector<int> ivec;

InitData(ivec, 1, 9);

print(ivec);

return 0;
}


  头文件的具体实现:

#ifndef WaHaHa
#define WaHaHa
//使用头文件保护符来防止重复包含
#include<iostream>
#include<vector>

template <typename elementType>
void print(elementType& elem)
{
for (elementType::iterator iter = elem.begin(); iter != elem.end(); ++iter)
{
cout << *iter << " ";
}
cout << endl;
}

template <typename elementType>
void InitData(elementType& elem, int b, int e)
{
//初始化插入数据
for (int i = b; i <= e; ++i)
{
elem.push_back(i);
}
}

#endif


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

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


  好了,上述所说的也需要大家灵活应用,比如说上面的插入数据实际上是用push_back方法实现,有时候需要insert方法或者push_front方法,那大家就需要更改或者再定义一个函数!就举这一个例子,其余不完善的也是一样,自行解决哈!基本想说的也就这么多啦!如果上述描述哪里有问题,请大家在下方评论指出,谢谢!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: