一步一步学STL标准模板库

list 的使用

在使用list必须包括头文件#include <list>,

1)、如何定义一个list对象

#include <list>
int main (void)
{
  list<char > cList; //声明了list<char>模板类 的一个实例
}

2)、使用list的成员函数push_back和push_front插入一个元素到list中

cList. push_back(‘a’); //把一个对象放到一个list的后面
cList. push_front (‘b’); //把一个对象放到一个list的前面

3)、使 用list的成员函数empty()判断list是否为空

if (cList.empty())
{
  printf(“this list is empty”);
}

4)、用list< char >::iterator得到指向list的指针

list< char>::iterator charIterator;
for(cIterator = cList.Begin();cIterator != cList.end();cIterator++)
{
  printf(“%c”, *cIterator);
} //输出list中的所有对象

说明:cList.Begin()和cList.end()函数返回指向 list< char >::iterator的指针,由于list采用链表结构,因此它不支持随机存取, 因此不能用cList.begin()+3来指向list中的第四个对象,vector和deque支持随机存取。

5)、用STL的通用算法count()来统计list中的元素个数

int cNum;
char ch = ’b’;
cNum = count(cList.Begin(), cList.end(), ch); //统计list中的字符b的个数

说 明:在使用count()函数之前必须加入#include <algorithm>

6)、用STL的通用算法count_if ()来统计list中的元素个数

const char c (‘c’);
class IsC
{
public:
  bool operator() ( char& ch )
  {
    return ch== c;
  }
};
int numC;
numC = count_if (cList.begin(), cList.end(),IsC());//统计c的数量;

说明: count_if() 带一个函数对象的参数,函数对象是一个至少带有一个operator()方法的类函数 对象被约定为STL算法调用operator时返回true或false。它们根据这个来判定这个函数。举 个例子会 说的更清楚些。count_if()通过传递一个函数对象来作出比count()更加复杂的评 估以确定一个对象是否应该被记数。

7)、使用STL通用算法find()在list中查找对象

list<char >::iterator FindIterator;
FindIterator = find(cList.begin(), cList.end(), ‘c’);
If (FindIterator == cList.end())
{
  printf(“not find the char ‘c’!”);
}
else
{
  printf(“%c”, * FindIterator);
}

说明:如果没有找到指定的对象,就会返回cList.end()的值,找到了就返回一个指 向对象iterator的指针。

时间: 2024-12-30 19:01:15

一步一步学STL标准模板库的相关文章

用标准模板库STL实现文件比较

要阅读本文,你要熟悉C++,熟悉类模板和函数模板.本文汇集了大量有关的信息,指引你逐步阅读. 本文用提问,设计和解决方案引导阅读.希望你能喜欢. 问题提出: 有二篇文章都含有许多行文字.我们要建立一个程序来找出二者之间的不同之处并将这些不同内容的行显示出来.程序必须做成可重复使用的组件,就是说,这个组件能够未经修改地被其他程序使用. 设计: 假设这二个文件非常之大(每个文件都有数千行),我们这样设计有关解决方案: 将各个文件读进内存块, 在内存块中进行文件内容比较, 将不同之处放进一个新的第三个

STL学习系列之二:标准模板库(STL)介绍

此文为转贴文章,由于原文运行在Linux下,我在vc6/7下进行调试,作了部分修改!注意:所有的代码在vc6/vc7下调试通过!标准模板库(STL)介绍 标准模板库(STL)介绍 0 前言. 1 定义一个list 2 使用list的成员函数push_back和push_front插入一个元素到list中 3 list的成员函数empty() 4 用for循环来处理list中的元素 5 用STL的通用算法for_each来处理list中的元素 6 用STL的通用算法count_if()来统计lis

STL学习系列之一——标准模板库STL介绍

库是一系列程序组件的集合,他们可以在不同的程序中重复使用.C++语言按照传统的习惯,提供了由各种各样的函数组成的库,用于完成诸如输入/输出.数学计算等功能. 1. STL介绍 标准模板库STL是当今每个从事C++编程的人需要掌握的技术,所有很有必要总结下 本文将介绍STL并探讨它的三个主要概念:容器.迭代器.算法. STL的最大特点就是: 数据结构和算法的分离,非面向对象本质.访问对象是通过象指针一样的迭代器实现的: 容器是象链表,矢量之类的数据结构,并按模板方式提供: 算法是函数模板,用于操作

入门教程:JSP标准模板库(上)

js|标准|教程|模板|入门教程 简介JSP标准模板库(JSTL)是SUN公司发布的一个针对JSP开发的新组件.JSTL允许你使用标签(tags)来进行JSP页面开发,而不是使用多数JSP程序员已经习惯了的scriptlet代码方式开发.JSTL几乎能够做到传统JSP scriptlet代码能做的任何事情.你可能会疑惑,为什么我们需要另一种这样的HTML生成语言呢? STL允许JSP程序员使用tags而不是JAVA代码来编程.为了展示为什么这个是更优越的,下面将给出示例.我们会检查一个非常简单的

C++标准库和标准模板库

C++强大的功能来源于其丰富的类库及库函数资源.C++标准库的内容总共在50个标准头文件中定义.在C++开发中,要尽可能地利用标准库完成.这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花费时间.人力重新开发呢:(2)质量:标准库的都是经过严格测试的,正确性有保证:(3)效率:关于人的效率已经体现在成本中了,关于代码的执行效率要相信实现标准库的大牛们的水平:(4)良好的编程风格:采用行业中普遍的做法进行开发. 在C++程序设计课程中,尤其是作为第一门程序设计课程,我们注重了语法.语言的

C++标准模板库与数据结构的学习

STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库.它被容纳于C++标准程序库(C++ Standard Library)中,是ANSI/ISO C++标准中极具革命性的一部分.该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法.为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性. 体验STL中的list STL中提供的list类,是一个双向循环链表类.从每一个元素(节点),都可以访问前面一个元素

标准模板库介绍

标准模板库,也叫 STL,是一个 C++ 容器类库,算法和迭代器.他提供许多 基本算法,数据结构.STL 是一个通用库,即可以充份定制:几乎所有的 STL 组件都是模板.在你使用 STL 前,你必须了解模板的工作情况. 容器和算法 和许多类库一样,STL 包含容器类 - 可以包含其他对象的类.STL 包含向量 类,链表类,双向队列类,集合类,图类,等等.他们中的每个类都是模板,能包含 各种类型的对象.例如,你可以用 vector<int> ,就象常规的 C 语 言中的数组,除了 vector

【C/C++学院】(12)C++标准模板库STL

1.简介          STL的代码从广义上讲分为三类:algorithm(算法).container(容器)和iterator(迭代器).  2.vector向量 #include "iostream" #include "vector" using namespace std; //== != [] = //(vector<int>模板类型 void printfArray(vector<int> &v) { int size

入门教程:JSP标准模板库(下)

js|标准|教程|模板|入门教程 JSTL标签库JSTL通常被认为是一种单标签库.但JSTL实际上有4个标签库.这些标签库被概括为如下: 核心标签库?包含一些Web应用的必要的标签.核心标签库的实例包括循环,表达式赋值和基本输入输出.. 格式化/国际化标签库?包括被用来解析数据的标签库.这种标签会解析数据,比如日期,不同的场所区域等. 数据库标签库?包含被用来访问SQL数据库的标签.这些标签通常仅仅只创建原形(prototype)程序.这个是因为大多数程序不会直接从JSP页面中来处理数据库访问.