这一篇因为游戏设计而写的,里面采用了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)的更多相关文章

  1. 使用VS2012编译和使用C++ STL(STLport)

    使用VS2012编译和使用C++ STL(STLport) http://cstriker1407.info/blog/use-vs2012-to-compile-and-use-the-c-stl- ...

  2. [转贴]从零开始学C++之STL(一):STL六大组件简介

    一.STL简介 (一).泛型程序设计 泛型编程(generic programming) 将程序写得尽可能通用 将算法从数据结构中抽象出来,成为通用的 C++的模板为泛型程序设计奠定了关键的基础 (二 ...

  3. C++STL(二)——vector容器

    STL--vector容器 vector对象的概念 vector基本操作 vector对象的初始化.赋值 vector查找.替换(已在上一片 string类 博客总结过了,不再总结) vector添加 ...

  4. STL(六)——map、multimap

    STL--map.multimap 文章目录 STL--map.multimap 关联容器与map的介绍 map与set的异同 map与multimap的异同 map类对象的构造 map添加元素 ma ...

  5. C++学习之STL(一)vector

    前言 C++ Primer Plus读书笔记(三)复合类型 中已经简单介绍过vector是什么,这个系列主要是介绍STL特性. 声明 vector<ElemType> c; //创建一个空 ...

  6. 从零开始学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 ...

  7. 51 nod 1624 取余最长路 思路:前缀和 + STL(set)二分查找

    题目: 写这题花了我一上午时间. 下面是本人(zhangjiuding)的思考过程: 首先想到的是三行,每一行一定要走到. 大概是这样一张图 每一行长度最少为1.即第一行(i -1) >= 1, ...

  8. ACM竞赛常用STL(二)之STL--algorithm

    <algorithm>无疑是STL 中最大的一个头文件,它是由一大堆模板函数组成的.下面列举出<algorithm>中的模板函数: adjacent_find / binary ...

  9. ACM竞赛常用STL(一)

    全排列函数next_permutation STL 中专门用于排列的函数(可以处理存在重复数据集的排列问题) 头文件:#include <algorithm> using namespac ...

随机推荐

  1. JS语法(二)

    JS变量 var 变量名 = 变量值://自己会判断什么类型 一个好的编程习惯是,在代码开始处,统一对需要的变量进行声明. var name = “xiaosan”, age = 22, addres ...

  2. 关于HTML(JSP)页面的缓存设置 -- cache-control

    我在项目中遇到这么一个问题,当用户登录了系统后,进入并copy下系统某个页面的link,然后关闭浏览器,重新打开浏览器,把刚才复制好的link paste到浏览器的地址栏去,直接enter,发现浏览器 ...

  3. jquery的.submit

    $("form").submit(function(e){ alert("Submitted"); });

  4. 初学matlab----函数用法(随学习更新中)

    sort(A) 若A是向量不管是列还是行向量,默认都是对A进行升序排列. sort(A)是默认的升序,而sort(A,'descend')是降序排序. sort(A)若A是矩阵,默认对A的各列进行升序 ...

  5. mac上抓iphone数据包

    iOS 5后,apple引入了RVI remote virtual interface的特性,它只需要将iOS设备使用USB数据线连接到mac上,然后使用rvictl工具以iOS设备的UDID为参数在 ...

  6. Java中的容器

    参考链接:Java容器与泛型(1) 认识容器,Java容器与泛型(2) ArrayList.LinkedList和Vector比较,Java容器与泛型(3) Hashset.TreeSet和Linke ...

  7. 简单的javascript--test2

    插件: jquery, sweetalert (http://t4t5.github.io/sweetalert/ ) 1.index.html <!DOCTYPE HTML> <h ...

  8. Cadence UVM基础视频介绍(UVM SV Basics)

    Cadence关于UVM的简单介绍,包括UVM的各个方面.有中文和英文两种版本. UVM SV Basics 1 – Introduction UVM SV Basics 2 – DUT Exampl ...

  9. 编程范式 episode3 and 4,5

    episode 3 --storage structure. ampersand operate with asterisk --library function episode 4 --generi ...

  10. CSS布局--浮动与清除

    浮动和清除 浮动和清除是页面布局的重要属性.浮动的意思是指将元素从常规的文档流中取出来. 当你浮动一个元素的时候,浮动的元素会被浏览器尽量的往上放,能放多高就放多高,一直到某个元素的边界为止. 浮动元 ...