2013-07-23工做記錄

使用算法
STL定義了一組算法。這些算法能夠經過迭代器來操做容器中的元素。STL實現了用
於完成一些常見任務的算法,如查找、亂序和排序。這些算法是內置的靈活而高效的工具。
使用它們能夠將操做容器中元素的普通任務交給STL完成,從而將精力集中在遊戲的編寫
上。這些算法的強大之處在於它們是泛型的,即一樣的算法能夠用於不一樣容器類型的元素。算法

1.使用算法的準備工做
爲了使用STL算法,咱們將含有算法定義的頭文件包含進來。
#include <algorithm> dom

2.使用find()算法工具

在顯示向量scores的內容後,程序從用戶獲取要查找的值,並存儲在變量score中。然
後,程序使用find()算法在scores向量中查找該值:性能

vector<int>::const_iterator iter;spa

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

   cout<<"\nHigh Scores:\n";
   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;ci

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

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

STL的find()算法在指定範圍內的容器元素中查找值,它返回引用第一個匹配元素的一
個迭代器。若是沒有找到匹配的元素,則返回的迭代器指向指定範圍的結尾處。必須給find()
傳遞一個起點迭代器、一個終點迭代器和要查找的值。該算法從起點迭代器開始查找,一
直查找到但不包括終點迭代器。

接下來,程序檢查值score是否找到:
if (iter != scores.end()) {
cout << "Score found.\n";
} else {
cout << "Score not found.\n";
}
請記住,若是找到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

相關文章
相關標籤/搜索