VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 820|回复: 2

[原创] 献上新人简单的STL用法

[复制链接]
20_avatar_middle
在线会员 发表于 2016-5-1 12:19:19 | 显示全部楼层 |阅读模式
  1. #include <iostream>
  2. #include <vector>
  3. #include <stack>
  4. #include <queue>
  5. #include <list>
  6. #include <algorithm>

  7. using namespace std;
  8. //排列算法函数
  9. void show(int &vi)
  10. {
  11.         cout<<"value:"<<vi<<endl;
  12. }
  13. int comp(const int &a,const int &b)
  14. {
  15.         return a>b;
  16. }

  17. int main()
  18. {
  19.         //测试线性表
  20.         cout<<"测试线性表"<<endl;
  21.         //构造线性表
  22.         vector <int> vi(10);
  23.         int i=0;
  24.         for(i=0;(i < vi.capacity());i++)
  25.         {
  26.                 vi[i]=i*10;
  27.         }
  28.         cout <<"capacity="<<vi.capacity()<<"size="<<vi.size()<<endl;
  29.         cout <<"循环次数:"<<i<<endl;

  30.         vi.resize(5);
  31.         cout <<"capacity="<<vi.capacity()<<"size="<<vi.size()<<endl;

  32.         cout<<"测试栈"<<endl;
  33.         //测试栈的使用
  34.         stack <double>stk;
  35.         for (i=0;i<9;i++)
  36.         {
  37.                 stk.push(double(i)/10.0);
  38.         }
  39.         for(i=0;i<9;i++)
  40.         {
  41.                 cout <<"当前元素:"<<i<<"值:"<<stk.top()<<endl;
  42.                 stk.pop();
  43.         }
  44.         cout<<"测试队列"<<endl;
  45.         queue <double> que;
  46.         for (i=0;i<9;i++)
  47.         {
  48.                 que.push(double(i)/10.0);
  49.         }
  50.         for(i=0;i<9;i++)
  51.         {
  52.                 cout <<"当前元素:"<<i<<"值:"<<que.front()<<endl;
  53.                 que.pop();
  54.         }
  55.         //测试迭代器
  56.         cout<<"测试迭代器"<<endl;
  57.         list <double> lst;

  58.         for (i=0;i<=9;i++)
  59.         {
  60.                 lst.push_back(double(i)/10);
  61.         }
  62.                 list <double> ::iterator current =lst.begin();
  63.         while(current !=lst.end())
  64.         {
  65.                 cout<<"value:"<< *current<<endl;
  66.                 current++;
  67.         }
  68.         //测试排列算法
  69.         cout<<"测试排列算法"<<endl;
  70.         cout<<"排列前"<<endl;
  71.         for_each(vi.begin(),vi.end(),show);
  72.         cout<<"排列后"<<endl;
  73.         sort(vi.begin(),vi.end(),comp);
  74.         for_each(vi.begin(),vi.end(),show);
  75.         //结尾结束
  76.         cin>>i;
  77.         return 0;
  78. }
复制代码




上一篇:二叉树的深度附代码
下一篇:出现这样是啥原因啊?
74_avatar_middle
在线会员 发表于 2016-5-2 09:24:10 | 显示全部楼层
//测试线性表中 vector 的遍歷 你是在 誤導別人嗎?
怎麼能 i < vi.capacity()
capacity 是容器容量大小 size才是 當前 容器數據塊大小 要遍歷容器 你必須使用 i < vi.size()
你的代碼之所以沒出錯 只不過是 因為 當前 容器容量大小 湊巧和 數據塊大小 相同 但 這兩個 值不是 一直相同的  
你在 你的 for 之前 加上 vi.reserve(20); 就會發現 程序運行錯誤了 reserve 會改變 容量大小
49_avatar_middle
在线会员 发表于 2016-5-2 17:39:14 | 显示全部楼层
zuiwuchang 发表于 2016-5-2 09:24
//测试线性表中 vector 的遍歷 你是在 誤導別人嗎?
怎麼能 i < vi.capacity()
capacity 是容器容量大小 ...

说的对v     
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-8-19 08:43

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表