设为首页 加入收藏

TOP

标准模板库(STL)List介绍(五)
2011-06-07 12:31:23 来源: 作者: 【 】 浏览:9171
Tags:标准 模板 STL List 介绍
 
  
用for循环来处理list中的元素 
     我们想要遍历一个list,比如打印一个中的所有对象来看看list上不同操作的结果。要一个元素一个元素的遍历一个list, 我们可以这样做:  
  
/* 
|| How to print the contents of a simple STL list. Whew!  
*/ 
#include <iostream.h> 
#include <string> 
#include <list> 
  
int main (void)  
   list<string> Milkshakes; 
   list<string>::iterator MilkshakeIterator; 
  
   Milkshakes.push_back("Chocolate"); 
   Milkshakes.push_back("Strawberry"); 
   Milkshakes.push_front("Lime"); 
   Milkshakes.push_front("Vanilla"); 
    
   // print the milkshakes 
   Milkshakes.push_front("The Milkshake Menu"); 
   Milkshakes.push_back("*** Thats the end ***"); 
   for (MilkshakeIterator=Milkshakes.begin();  
          MilkshakeIterator!=Milkshakes.end();  
           ++MilkshakeIterator)  
   { 
     // dereference the iterator to get the element 
     cout << *MilkshakeIterator << endl; 
   }      
     这个程序定义了一个iterator,MilkshakeIterator。我们把它指向了这个list的第一个元素。 这可以调用Milkshakes.begin()来作到,它会返回一个指向list开头的iterator。然后我们把它和Milkshakes.end()的 返回值来做比较,当我们到了那儿的时候就停下来。  
  
     容器的end()函数会返回一个指向容器的最后一个位置的iterator。当我们到了那里,就停止操作。 我们不能不理容器的end()函数的返回值。我们仅知道它意味着已经处理到了这个容器的末尾,应该停止处理了。 所有的STL容器都要这样做。  
  
     在上面的例子中,每一次执行for循环,我们就重复引用iterator来得到我们打印的字符串。  
  
     在STL编程(www.cppentry.com)中,我们在每个算法中都使用一个或多个iterator。我们使用它们来存取容器中的对象。 要存取一个给定的对象,我们把一个iterator指向它,然后间接引用这个iterator。  
  
     这个list容器,就象你所想的,它不支持在iterator加一个数来指向隔一个的对象。 就是说,我们不能用Milkshakes.begin()+2来指向list中的第三个对象,因为STL的list是以双链的list来实现的, 它不支持随机存取。vector和deque(向量和双端队列)和一些其他的STL的容器可以支持随机存取。  
  
     上面的程序打印出了list中的内容。任何人读了它都能马上明白它是怎麽工作的。它使用标准的iterator和标准 的list容器。没有多少程序员依赖它里面装的东西, 仅仅是标准的C++(www.cppentry.com)。这是一个向前的重要步骤。这个例子使用STL使我们的软件更加标准。  
  
  
首页 上一页 2 3 4 5 6 7 8 下一页 尾页 5/18/18
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇 C++语言的url encode 和decode 下一篇C++ map的基本操作和使用

评论

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