STL学习篇:“投机取巧”地学习
2015-08-18 17:32
197 查看
这两天一直在学习STL,先大致说一下我的学习的方法:最初是大致看一遍STL的初级入门书,然后再过一遍网上大牛讲的视频,一边跟着操作,不懂的一般就在网上一直找!看看大牛发的帖子!基本学习方法就是这样啦,总的来说谁也不可能避免实际操作这一环节,因为我们都是要学以致用的!也许有人学习新知识比较快,可以不看视频之类的,这个我只想说自己根据自己的情况来定吧!不瞎扯啦,我也只只是一个小小的初学者,就说说这两天碰到的问题吧!
大牛的视频中,每次都是要包含需要的头文件,然后就是选择合适的容器,进行初始化,输出,进而进行相应方法的讲述!基本就是这样一个流程,这里不是想说大牛的讲课方法有问题,这个绝对科学,因为每节课讲述的内容关联性不是很强,并且比如某人是初学者只是想了解一些章节,那么这个方法就适合任意一个人!大牛一直说,还可以加深记忆,刚开始学就这样听着确实挺好的!但是后来,因为这些操作都比较常规,基本已经熟练掌握了,就是打字速度跟不上大牛的节奏,所以在这些普通操作中得暂停一下,跟上节奏,心里小小略感不爽!所以,我就琢磨地将初始化数据操作和打印输出操作,写成模板函数,放入自定义的头文件中,然后直接调用就是!下面是具体操作:
对了,这里还得小小强调一下,这样确实用得爽,但是感觉肯定有人这样用过,并且这里应该有些门路!我自己就知道,这里涉及的知识点有C++程序编译方式、头文件的书写和调用等,自己用还行,但是当要写出来的时候就得注意,确实得注意了,这也是平时学习养成的良好学习习惯,而不是只是单纯为了写出来才去查看!这些知识点大家自己去科普哈,园中有大拿解释,我也收藏了几篇!大家有兴趣可以去看看!
这里总结一下,以这样的方式写需要注意的问题:
c++语言支持“分别编译”到底是怎么回事
头文件书写一般只放声明,但是有特殊情况,调用的时候怎么防止重复调用,具体应该怎么写等
调用的时候写头文件的时候可能会碰到绝对路径和相对路径的概念
程序功能:以容器vector为例,实现插入1~9的数据,并输出:
主函数如下:
头文件的具体实现:
头文件的实现
因为这里涉及的是模板函数,所以就直接将函数方法的实现也放进来啦!我还想着如果只是学习的话,在头文件的包汉中将常用的几个容器头文件都写进来,省的主函数里面再去写,因为我们初学者写的程序比较小而不是特别复杂!这个确实方便,但是心里老是感觉怪怪的。。。
程序运行结果及文件分布截图:
好了,上述所说的也需要大家灵活应用,比如说上面的插入数据实际上是用push_back方法实现,有时候需要insert方法或者push_front方法,那大家就需要更改或者再定义一个函数!就举这一个例子,其余不完善的也是一样,自行解决哈!基本想说的也就这么多啦!如果上述描述哪里有问题,请大家在下方评论指出,谢谢!!!
大牛的视频中,每次都是要包含需要的头文件,然后就是选择合适的容器,进行初始化,输出,进而进行相应方法的讲述!基本就是这样一个流程,这里不是想说大牛的讲课方法有问题,这个绝对科学,因为每节课讲述的内容关联性不是很强,并且比如某人是初学者只是想了解一些章节,那么这个方法就适合任意一个人!大牛一直说,还可以加深记忆,刚开始学就这样听着确实挺好的!但是后来,因为这些操作都比较常规,基本已经熟练掌握了,就是打字速度跟不上大牛的节奏,所以在这些普通操作中得暂停一下,跟上节奏,心里小小略感不爽!所以,我就琢磨地将初始化数据操作和打印输出操作,写成模板函数,放入自定义的头文件中,然后直接调用就是!下面是具体操作:
对了,这里还得小小强调一下,这样确实用得爽,但是感觉肯定有人这样用过,并且这里应该有些门路!我自己就知道,这里涉及的知识点有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方法,那大家就需要更改或者再定义一个函数!就举这一个例子,其余不完善的也是一样,自行解决哈!基本想说的也就这么多啦!如果上述描述哪里有问题,请大家在下方评论指出,谢谢!!!
相关文章推荐
- 移动Windows用户文件夹的方法研究
- POJ 1328 Radar Installation
- 改革能给中国足球带来希望吗?
- AGFA 3rd MUSICA algorithm
- JAVA反射机制的几种实现
- 记忆化搜索,dp
- 常用数码测评网站
- Access自动编号的初始值设置及重置编号
- Java 继承
- 完美集群监控组合ganglia和nagios
- 一个表空间使用率查询sql的优化
- DNA Sorting 1379 (字符串排序)
- JS实现下拉菜单赋值到文本框的方法
- [Matlab]随机漫步Random Walk和奇异期权的Matlab实现
- PAT 1044. Shopping in Mars (25)
- The method find(String, Object[]) is ambiguous for the type
- sqlserver 全文索引
- Android性能优化典范 二
- Unity Vevtor3 中文翻译
- openerp/odoo权限设置总结