游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1646|回复: 6

猫吃老鼠的STL实现wxh zt

[复制链接]

1367

主题

1993

帖子

2118

积分

金牌会员

Rank: 6Rank: 6

积分
2118
发表于 2005-2-4 21:06:00 | 显示全部楼层 |阅读模式

一、我在VC知识库网站看到猫吃老鼠问题,感觉如果用STL将更加简单。在实现时将问题稍作修改,变成总共n个老鼠,每隔m个吃一个,求最后剩下哪一个,并用STL实现

二、代码
#include < vector >
#include < iostream >

using namespace std;

int eat(const int total, const int space)
{
   if (total <= 0 || space <= 0)
   {
      return -1;
   }

   vector           v;
   vector::iterator it;

   // 初使化向量
   for (int i = 1; i <= total; ++i)
   {
      v.push_back(i);
   }

   int j = 1;
   it   = v.begin();
   while (v.size() > 1)
   {
      // 如果数到第m个,则删除它,并且从头开始数
      // 迭代器不需要后移,因为删除之后自动就指向下一个元素
      if (space == j)
      {
         v.erase(it);
         j = 1;
      }
      else
      {
         ++it;
         ++j;
      }

      // 如果到最后了,让迭代器指向第一个元素
      if (it >= v.end())
      {
         it = v.begin();
      }
   }

   // 现在只有一个元素了,那么第一个元素就是我们需要的
   return (*v.begin());
}

void main( void )
{
   int total;
   int space;

   total = 5;
   space = 1;
   cout << "总共: " << total << "  "
       << "间隔: " << space << "  "
       << "最后: " << eat(total, space) << endl;

   total = 5;
   space = 2;
   cout << "总共: " << total << "  "
       << "间隔: " << space << "  "
       << "最后: " << eat(total, space) << endl;

   total = 5;
   space = 3;
   cout << "总共: " << total << "  "
       << "间隔: " << space << "  "
       << "最后: " << eat(total, space) << endl;
   
}

37

主题

727

帖子

740

积分

高级会员

Rank: 4

积分
740
发表于 2005-2-6 15:46:00 | 显示全部楼层

Re:猫吃老鼠的STL实现wxh zt

你的文章太多
看不过来了
只能乱水

35

主题

340

帖子

350

积分

中级会员

Rank: 3Rank: 3

积分
350
发表于 2005-2-6 22:00:00 | 显示全部楼层

Re:猫吃老鼠的STL实现wxh zt

呵呵哈

编译通不过啊
i:\out\stl1\stl11.cpp(13) : error C2955: 'vector' : use of class template requires template argument list

35

主题

340

帖子

350

积分

中级会员

Rank: 3Rank: 3

积分
350
发表于 2005-2-6 22:03:00 | 显示全部楼层

Re:猫吃老鼠的STL实现wxh zt

我改了一下
编译通过了

用stl简单在那里呢?
那位达人讲一下

37

主题

727

帖子

740

积分

高级会员

Rank: 4

积分
740
发表于 2005-2-6 22:17:00 | 显示全部楼层

Re:猫吃老鼠的STL实现wxh zt

有很多特殊功能
有迭代器啊(类似于指针)

可以从头和尾插入变量

大小很自由,操作也比较安全~

等等~~~~

进一步的研究嘛,可以参考源代码,我只看过一些,以后会细心研究的

31

主题

630

帖子

635

积分

高级会员

Rank: 4

积分
635
发表于 2005-2-8 15:21:00 | 显示全部楼层

Re:猫吃老鼠的STL实现wxh zt

可能因为我对题目不太了解,但是你怎么知道循环一定会结束呢。

STL最初是由hp公司内部开发UNIX和C++的几位高人开发的,后来开放了源代码,被全世界的C++高手反复推敲。充分利用了c++的模版和重载等功等的优势。可以说是把c++运用到了极至。多年来被认为是c++上基本数据结构的最佳实现。

139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
发表于 2005-2-8 16:53:00 | 显示全部楼层

Re:猫吃老鼠的STL实现wxh zt

STL……不大爽
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-24 07:59

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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