STL(1)
这一篇因为游戏设计而写的,里面采用了STL,先借用一下,过段时间专项研究。
模板
模板就是一种通用化的类,同一种模板可以创建无数种具有共同特征的容器类型。首先需要指定基础类型,比如int ,char,或者自定义的类型。
比如声明链表类的语法:
list<type> list_name;
具体来说:
list<int> Box;
创建结点类型为int,链表名为Box的一个类,一旦有类,就有方法:
| list成员 | list成员 | ||
| front | 返回第一个元素的引用 | back | 返回最后一个元素的引用 |
| begin | 返回第一个元素的指针 | end | 返回最后一个元素的下一位置的指针 |
| push_back | 在链表尾插入一个元素 | push_front | 增加一个元素到链表头 |
| pop_back | 删除链表尾一个元素 | pop_front | 删除链表头的一个元素 |
| erase | 删除一个元素或一个区域的元素 | remove | 删除链表中匹配值的元素 |
| empty | 判定链表是否为空 | size | 返回链表中的元素个数 |
| sort | 排序 | insert | 在指定位置插入一个或多个元素 |
遍历
如果需要对链表中的结点进行遍历,需要为链表声明遍历器,语法如下:
list<int>::iterator i;
一旦有了遍历器,就可以遍历结点,简单例子(结点元素为整型):
#include <iostream>
#include <list> //list头文件
using namespace std;
int main()
{
int N;
list<int> Box;
list<int>::iterator i;
for(N=;N<;N++)
Box.push_back(N);
cout<<Box.size()<<endl;//返回链表Box的元素个数;
for(i=Box.begin();i!=Box.end();i++)//遍历链表结点
cout<<*i<<" ";
return ;
}
自定义类型
自定义类型是常见的,前面所说的结点元素要么整型,要么字符型,而实际上类型可以有很多种,比如结构类型。指明一个问题比较明白,比如说,定义一个结构类型,要求能添加元素,删除元素,清空链表。
结构的定义:
typedef struct node
{
int a;
char b;
}Node;
//list链表类的研究例子 #include <iostream>
#include <list> //list头文件
using namespace std;
typedef struct node//元素结点的定义
{
int a;
char b;
}Node; list<Node> Box;//全局Box类
list<Node>::iterator i;//遍历器 int main()
{
Node a={,'a'};//创建一个结点
Box.push_back(a);//入链表
Node b={,'c'};//创建一个结点
Box.push_back(a);//入链表
i=Box.begin();//i很像指针
cout<<i->a<<" "<<i->b<<endl;//打印第一个元素的相关值
while(!Box.empty())//清空链表
{
Box.pop_back();
}
cout<<Box.size()<<endl;
return ;
}
从上面可以看出来,STL简化太多,不用再考虑如何将指针指来指去,如何将结点进行连接,一个push_back()就解决了问题。这种先进的东西得学会!
————————————————————————————————————————————————————————————————
STL(1)的更多相关文章
- 使用VS2012编译和使用C++ STL(STLport)
使用VS2012编译和使用C++ STL(STLport) http://cstriker1407.info/blog/use-vs2012-to-compile-and-use-the-c-stl- ...
- [转贴]从零开始学C++之STL(一):STL六大组件简介
一.STL简介 (一).泛型程序设计 泛型编程(generic programming) 将程序写得尽可能通用 将算法从数据结构中抽象出来,成为通用的 C++的模板为泛型程序设计奠定了关键的基础 (二 ...
- C++STL(二)——vector容器
STL--vector容器 vector对象的概念 vector基本操作 vector对象的初始化.赋值 vector查找.替换(已在上一片 string类 博客总结过了,不再总结) vector添加 ...
- STL(六)——map、multimap
STL--map.multimap 文章目录 STL--map.multimap 关联容器与map的介绍 map与set的异同 map与multimap的异同 map类对象的构造 map添加元素 ma ...
- C++学习之STL(一)vector
前言 C++ Primer Plus读书笔记(三)复合类型 中已经简单介绍过vector是什么,这个系列主要是介绍STL特性. 声明 vector<ElemType> c; //创建一个空 ...
- 从零开始学C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)
一.移除性算法 (remove) C++ Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ...
- 51 nod 1624 取余最长路 思路:前缀和 + STL(set)二分查找
题目: 写这题花了我一上午时间. 下面是本人(zhangjiuding)的思考过程: 首先想到的是三行,每一行一定要走到. 大概是这样一张图 每一行长度最少为1.即第一行(i -1) >= 1, ...
- ACM竞赛常用STL(二)之STL--algorithm
<algorithm>无疑是STL 中最大的一个头文件,它是由一大堆模板函数组成的.下面列举出<algorithm>中的模板函数: adjacent_find / binary ...
- ACM竞赛常用STL(一)
全排列函数next_permutation STL 中专门用于排列的函数(可以处理存在重复数据集的排列问题) 头文件:#include <algorithm> using namespac ...
随机推荐
- 转一篇老外写的博文:Android automated testing (Robotium)
Robotium的中文资料甚少,只得求助于老外,发现了一篇不错的文章:https://blog.codecentric.de/en/2011/03/android-automated-testing- ...
- jquery常用正则表达式
1.邮箱验证正则表达式:/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/ 2.手机验证正则表达式:/^ ...
- Home not found. Define system property "openfireHome" or create and add the openfire_init.xml file to the classpath
启动openfire后出现这个错误,貌似什么配置没对吧.网上搜索了下,找到解决办法, $ vi /etc/profile在里面加入:export openfireHome=/opt/openfire ...
- 5.Makefile的原理及应用
1.概念 目标:目标顶格写,后面是冒号(冒号后面是依赖) 依赖:依赖是用来产生目标的原材料. 命令:命令前面一定是两个Tab,不能是定格,也不能说多个空格.命令就是要生成那个目标需要做的动作. 2.基 ...
- GPUImage相关(转)
3.滤镜 除了上面提到的美颜和水印之外,视频中还有很多其它的处理效果也在这个环节完成.七牛直播云提供的 SDK 在开放性设计基础之上,通过数据源回调接口,可以支持各种自定义滤镜的接入. 为了实现丰富的 ...
- [转载] Android中Xposed框架篇---利用Xposed框架实现拦截系统方法
本文转载自: http://www.wjdiankong.cn/android%E4%B8%ADxposed%E6%A1%86%E6%9E%B6%E7%AF%87-%E5%88%A9%E7%94%A8 ...
- 关于Android的布局
Android中五大布局是直接继承ViewGroup的布局:RelativeLayout.GridLayout.FrameLayout.AbsoluteLayout.LinnerLayout(Tabl ...
- 通过字符串寻找与字符串一致的model的属性
// 取得选中权限集合 string[] arrAuthorityId = this.hidAuthorityIds.Value.TrimEnd(',').Split(','); BLBQ_Autho ...
- C++中,指针数组和数组指针
这俩兄弟长得实在太像,以至于经常让人混淆.然而细心领会和甄别就会发现它们大有不同. 前者是指针数组,后者是指向数组的指针.更详细地说. 前: 指针数组;是一个元素全为指针的数组. 后: 数组指针;可以 ...
- 小甲鱼python视频第七讲(课后习题)
1.assert的作用. assert用来判断语句的真假,如果为假的话将触发AssertionError错误. 如果为真则继续执行. 2.变量互换(注意顺序) 3.成员资格运算符(in) 4.分数的划 ...