zoukankan      html  css  js  c++  java
  • 2013-07-23工作记录

    使用算法
    STL定义了一组算法。这些算法可以通过迭代器来操作容器中的元素。STL实现了用
    于完成一些常见任务的算法,如查找、乱序和排序。这些算法是内置的灵活而高效的工具。
    使用它们可以将操作容器中元素的普通任务交给STL完成,从而将精力集中在游戏的编写
    上。这些算法的强大之处在于它们是泛型的,即同样的算法可以用于不同容器类型的元素。

    1.使用算法的准备工作
    为了使用STL算法,我们将含有算法定义的头文件包含进来。
    #include <algorithm>

    2.使用find()算法

    在显示向量scores的内容后,程序从用户获取要查找的值,并存储在变量score中。然
    后,程序使用find()算法在scores向量中查找该值:

    vector<int>::const_iterator iter;

       cout<<"Creating a list of scores.";
       vector<int> scores;
       scores.push_back(1500);
       scores.push_back(3500);
       scores.push_back(7500);

       cout<<" High Scores: ";
       for (iter=scores.begin(); iter!=scores.end(); iter++) {
           cout<<*iter<<endl;
       }

       cout<<"Finding a score.";
       int score;
       cout<<"Entering a score to find.";
       cin>>score;

       iter=find(scores.begin(),scores.end(),score);

    iter = find(scores.begin(), scores.end(), score);

    STL的find()算法在指定范围内的容器元素中查找值,它返回引用第一个匹配元素的一
    个迭代器。如果没有找到匹配的元素,则返回的迭代器指向指定范围的结尾处。必须给find()
    传递一个起点迭代器、一个终点迭代器和要查找的值。该算法从起点迭代器开始查找,一
    直查找到但不包括终点迭代器。

    接下来,程序检查值score是否找到:
    if (iter != scores.end()) {
    cout << "Score found. ";
    } else {
    cout << "Score not found. ";
    }
    请记住,如果找到score的值,iter 将引用向量中第一次出现score的元素。因此,只
    要iter不等于scores.end(),就说明查找成功。随后程序显示消息表示查找成功。否则,iter
    将等于scores.end(),说明查找失败。

    3.使用random_shuffle()算法

    srand(static_cast<unsigned int>(time(0))); //为随机数生成器确定种子

    random_shuffle(scores.begin(), scores.end());//程序随机地对分数进行重新排序

    //random_shuffle()算法将序列中的元素进行乱序。该算法需要序列的起点迭代器和终点
    迭代器来进行乱序操作

    PS:尽管或许不需要对某个高分列表进行乱序操作,但对于游戏而言,random_shuffle()依
    然是个很有价值的算法。它可以用来洗牌,也可以打乱玩家在游戏的某一关中遭遇敌
    人的顺序。

    4.使用sort()算法

    sort(scores.begin(), scores.end());

    sort()算法对序列中的元素进行升序排列。该算法需要序列的起点迭代器和终点迭代器来进行排序操作。

    ps:STL算法的一个绝妙的特性在于,它们可以用于定义在STL之外的容器,只要这些容
    器满足特定要求即可。

    理解向量的性能

    http://www.mindmap.com.cn/ yesunsong yss123

  • 相关阅读:
    PVE6.3去订阅
    帝国CMS灵动标签当天更新的日期显示红色其他颜色变成灰色
    灵动标签实现循环子栏目数据——实现 循环子栏目数据标签 (listsonclass)的效果
    帝国cms灵动标签实现循环子栏目数据
    帝国cms常用灵动标签
    51nod1847 奇怪的数学题
    CTS2019 氪金手游
    CTS2019 重复
    UR #5 怎样跑得更快
    AGC034 F
  • 原文地址:https://www.cnblogs.com/yssgyw/p/3208097.html
Copyright © 2011-2022 走看看