设为首页 加入收藏

TOP

标准模板库(STL)List介绍(十一)
2011-06-07 12:31:23 来源: 作者: 【 】 浏览:9189
Tags:标准 模板 STL List 介绍
 
  
使用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>  
   
int 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 (PositionOfNulls!=ListOfCharacters.end())  
         cout << "We found the nulls" << endl;  
}  
  
The output of the program will be 这是程序的输出:  
  
We found the nulls  
  
search算法在一个序列中找另一个序列的第一次出现的位置。在这个例子里我们在ListOfCharacters中 找TargetCharacters这个序列的第一次出现,TargetCharacters是包含两个null字符的序列。  
search的参数是两个指着查找目标的iterator和两个指着搜索范围的iterators。 因此我们我们在整个的ListOfCharacters的范围内查找TargetCharacters这个list的整个序列。  
  
如果TargetCharacters被发现,search就会返回一个指着ListOfCharacters中序列匹配的第一个 字符的iterator。如果没有找到匹配项,search返回ListOfCharacters.end()的值。  
  
  
  
首页 上一页 8 9 10 11 12 13 14 下一页 尾页 11/18/18
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇 C++语言的url encode 和decode 下一篇C++ map的基本操作和使用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: