| 发表于:2007-04-02 12:29:034楼 得分:0 |
#include "stdafx.h " #include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; class player { private: string _id; string _name; int _lvl; int _exp; public: player() :_lvl(0), _exp(0) { } player(const string& id, const string& name, int lvl = 0, int exp = 0); void info() const; void modify(); string id() const { return _id; } int level() const { return _lvl; } }; player::player(const string& id, const string& name, int lvl, int exp) { this-> _id = id; this-> _name = name; this-> _lvl = lvl; this-> _exp = exp; } void player::info() const { cout < < " 玩家id: " < < this-> _id < <endl; cout < < " 玩家姓名: " < < this-> _name < <endl; cout < < " 玩家等级为: " < < this-> _lvl < <endl; cout < < "玩家经验值为: " < < this-> _exp < <endl; cout < < endl; } void player::modify() { } bool higherlevelplayer(const player& lhs, const player& rhs) { return lhs.level() > rhs.level() ; } class correctplayer { private: const string* _name; public: correctplayer(const string& name) { _name = &name; } bool operator() (const player& player) { return player.id() == *_name; } }; class playervector { private: vector <player> _vector; public: void pushback(const player& player); void sort(); bool search(const string& id, player& result) const; void show() const ; }; void playervector::sort() { sort(_vector.begin(), _vector.end(), higherlevelplayer); } bool playervector::search(const string& id, player& result) const { vector <player> ::const_iterator pos = find_if(_vector.begin(), _vector.end(), correctplayer(id)); if (pos != _vector.end()) { result = *pos; return true; } return false; } void playervector::pushback(const player& player) { _vector.push_back(player); } void playervector::show() const { for (vector <player> ::const_iterator pos = _vector.begin(); pos != _vector.end(); ++pos) { pos-> info(); } } void test() { playervector playervector; playervector.pushback(player( "e ", "e ", 5, 5)); playervector.pushback(player( "d ", "d ", 4, 4)); playervector.pushback(player( "a ", "a ", 1, 1)); playervector.pushback(player( "b ", "b ", 4, 2)); playervector.pushback(player( "c ", "c ", 3, 3)); cout < < "原始玩家资料: " < < endl; playervector.show(); cout < < "排序后的玩家资料: " < < endl; playervector.sort(); playervector.show(); string searchid; cout < < "需要搜索的玩家id: "; getline(cin, searchid); player result; if ( playervector.search(searchid, result) ) { cout < < "搜索结果: " < < endl; result.info(); } else { cout < < "没有id匹配的玩家资料 " < < endl; } } void main() { test(); } 大概就是这样子吧,关于输入玩家资料部分不写了,好久不用c++,难免有不好的地方。 | | |
|