设为首页 加入收藏

TOP

4.3.1 Hero's Inventory 3.0程序简介
2013-10-07 14:45:06 来源: 作者: 【 】 浏览:67
Tags:4.3.1 Hero' Inventory 3.0 程序 简介

4.3  使用迭代器

迭代器是将容器的潜力发挥到极致的关键。迭代器可以用于循环访问序列容器。另外,STL的某些重要部分需要用到迭代器。许多容器的成员函数和STL算法将迭代器作为其实参。因此,如果希望从成员函数和算法中获益,就必须使用迭代器。

4.3.1  Hero's Inventory 3.0程序简介

Hero's Inventory 3.0程序至少在一开始同它的两个前身的行为是一样的。该程序列出所有物品,替换掉第一个物品,然后显示某个物品名称的字母数目。但是,该程序此后做出一些新的操作:在向量的起始位置插入一个元素,然后从向量中间移除一个元素。这些都是通过迭代器来完成的。程序的运行示例如图4-2所示。

 
(点击查看大图)图4-2  程序实现了一些只能用迭代器完成的向量操作
从Course Technology网站(www.courseptr.com/downloads)或本书合作网站(http://www. tupwk.com.cn/downpage)上可以下载该程序的代码。程序位于Chapter 4文件夹中,文件名为heros_inventory3.cpp。
  1. // Hero's Inventory 3.0  
  2. // Demonstrates iterators  
  3. #include <iostream> 
  4. #include <string> 
  5. #include <vector> 
  6. using namespace std;  
  7. int main()  
  8. {  
  9. vector<string> inventory;  
  10. inventory.push_back("sword");  
  11. inventory.push_back("armor");  
  12. inventory.push_back("shield");  
  13. vector<string>::iterator myIterator;  
  14. vector<string>::const_iterator iter;  
  15. cout << "Your items:\n";  
  16. for (iter = inventory.begin(); iter != inventory.end(); ++iter)  
  17. {  
  18. cout << *iter << endl;  
  19. }  
  20. cout << "\nYou trade your sword for a battle axe.";  
  21. myIterator = inventory.begin();  
  22. *myIterator = "battle axe";  
  23. cout << "\nYour items:\n";  
  24. for (iter = inventory.begin(); iter != inventory.end(); ++iter)  
  25. {  
  26. cout << *iter << endl;  
  27. }  
  28. cout << "\nThe item name '" << *myIterator << "' has ";  
  29. cout << (*myIterator).size() << " letters in it.\n";  
  30. cout << "\nThe item name '" << *myIterator << "' has ";  
  31. cout << myIterator->size() << " letters in it.\n";  
  32. cout << "\nYou recover a crossbow from a slain enemy.";  
  33. inventory.insert(inventory.begin(), "crossbow");  
  34. cout << "\nYour items:\n";  
  35. for (iter = inventory.begin(); iter != inventory.end(); ++iter)  
  36. {  
  37. cout << *iter << endl;  
  38. }  
  39. cout << "\nYour armor is destroyed in a fierce battle.";  
  40. inventory.erase((inventory.begin() + 2));  
  41. cout << "\nYour items:\n";  
  42. for (iter = inventory.begin(); iter != inventory.end(); ++iter)  
  43. {  
  44. cout << *iter << endl;  
  45. }  
  46. return 0;  
  47. }  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.2.3 向量的声明 下一篇4.2.8 使用pop_back()成员函数

评论

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