快速业务通道

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

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29
at position 12 for 4 characters in EventRecord
    return EventRecord.substr(12,4)=="1997";
  }
};
void main (void) {
  list<string> Events;
  // string positions 0123456789012345678901234567890123456789012345
  Events.push_back("07 January 1995 Draft plan of house prepared");
  Events.push_back("07 February 1996 Detailed plan of house prepared");
  Events.push_back("10 January 1997 Client agrees to job");
  Events.push_back("15 January 1997 Builder starts work on bedroom");
  Events.push_back("30 April  1997 Builder finishes work");
  list<string>::iterator EventIterator = find_if (Events.begin(), Events.end(), EventIsIn1997());
  // find_if completes the first time EventIsIn1997()() returns true
  // for any object. It returns an iterator to that object which we
  // can dereference to get the object, or if EventIsIn1997()() never
  // returned true, find_if returns end()
  if (EventIterator==Events.end()) {
    cout << "Event not found in list" << endl;
  }
  else {
    cout << *EventIterator << endl;
  }
}

这是程序的输出:

10 January 1997 Client agrees to job

10 使用STL通用算法search在list中找一个序列

一些字符在STL容器中很好处理,让我们看一看一个难处理的字符序列。我们将定义一个list来放字符。

list<char> Characters;

现在我们有了一个字符序列,它不用任何帮助就知道然后管理内存。它知道它是从哪里开始、到哪里结束。它非常有用。我不知道我是否说过以null结尾的字符数组。

让我们加入一些我们喜欢的字符到这个list中:

Characters.push_back(''\0'');
Characters.push_back(''\0'');
Characters.push_back(''1'');
Characters.push_back(''2'');

我们将得到多少个空字符呢?

int NumberOfNullCharacters(0);
count(Characters.begin(), Characters.end(), ''\0'', NumberOfNullCharacters);
cout << "We have " << NumberOfNullCharacters << endl;

让我们找字符''1''

list<char>::iterator Iter;
Iter = find(Characters.begin(), Characters.end(), ''1'');
cout << "We found " << *Iter << endl;

这个例子演示了STL容器允许你以更标准的方法来处理空字符。现在让我们用STL的search算法来搜索容器中 的两个null。就象你猜的一样,STL通用算法search()用来搜索一个容器,但是是搜索一个元素串,不象find()和find_if() 只搜索单个的元素。

/*
|| How to use the search algorithm in an STL list
*/
#include <string>
#include <list>
#include <algorithm>
#include <iostream>
using namespace std;
void main ( void){
  list<char> TargetCharacters;
  list<char> ListOfCharacters;
  TargetCharacters.push_back(''\0'');
  TargetCharacters.push_back(''\0'');
  ListOfCharacters.push_back(''1'');
  ListOfCharacters.push_back(''2'');
  ListOfCharacters.push_back(''\0'');
  ListOfCharacters.push_back(''\0'');
  list<char>::iterator PositionOfNulls = search(ListOfCharacters.begin(), ListOfCharacters.end(), TargetCharacters.begin(), TargetCharacters.end());
  if

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号