用vector、multimap、list容器实现好友列表的各种操作C++
--------------------------------------------------BuddyList.h------------------------------------------------#include
#include
#include
//using std::multimap;
//using std::string;
//using std::list;
using namespace std;
struct Info
{
string id;
string name;
string otherInfo;
};
class BuddyList
{
public:
BuddyList();
Info getMyInfo();
void setMyInfo(const Info &info);
void addBuddy(const Info &friInfo);
bool remove(const string &friId);
bool isBuddy(const string &friId);
list
protected:
multimap
private:
Info myInfo;
//BuddyList(const BuddyList &src);
//BuddyList & operator=(const BuddyList &rhs);
};
BuddyList::BuddyList(){};
Info BuddyList::getMyInfo()
{
return myInfo;
}
void BuddyList::setMyInfo(const Info &info)
{
myInfo = info;
}
void BuddyList::addBuddy(const Info &friInfo)
{
if( !isBuddy(friInfo.id))
mBuddies.insert(make_pair(myInfo.id,friInfo));
}
bool BuddyList::remove(const std::string &friId)
{
if(!isBuddy(friId))
return false;
multimap
start = mBuddies.lower_bound(myInfo.id);
end = mBuddies.upper_bound(myInfo.id);
for(;start != end; ++start)
{
if(start->second.id == friId)
{
mBuddies.erase(start);
return true;
}
}
}
bool BuddyList::isBuddy(const std::string &friId)
{
multimap
start = mBuddies.lower_bound(myInfo.id);
end = mBuddies.upper_bound(myInfo.id);
for(;start != end; ++start)
{
if(start->second.id == friId)
return true;
}
return false;
}
list
{
/*
pair
multimap
its = mBuddies.equal_range(myInfo.id);
*/
list
multimap
for(multimap
buddies.push_back(it->second);
return buddies;
}
-------------------------------------------------主函数.cpp----------------------------------------------------// 好友列表实现.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include
#include "BuddyList.h"
#include
#include
#include
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
Info info1,info2;
vector
cout<<"***********************请选择需要进行的操作******************"< cout<<"---------------建立所有用户好友列表(C/c)------------------"< cout<<"-------------------新增用户好友(I/i)----------------------"< cout<<"---------------查找指定用户所有好友(S/s)------------------"< cout<<"---------------删除指定用户某位好友(R/r)------------------"< cout<<"------------------------退出(E/e)-------------------------"< cout< char cmd; cin>>cmd; while(1) { if(cmd=='C'||cmd=='c') { cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"< cout<<"请输入所有用户"< cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"< while(1) { cout< cout<<"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"< cout<<"请输入账号(以0结束):"; cin>>info1.id; if(info1.id=="0") break; cout<<"请输入他的姓名:"; cin>>info1.name; cout<<"请输入他的其他的信息:"; cin>>info1.otherInfo; BuddyList buddyList; buddyList.setMyInfo(info1); ///////////////////////////////////////////////usersBudList.push_back(buddyList); cout< cout<<"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"< cout<<"请输入他所有好友的信息"< while(1) { cout<<"**********************************"< cout<<"请输入好友账号(以0结束):"; cin>>info2.id; if(info2.id=="0") break; cout<<"请输入他的姓名:"; cin>>info2.name; cout<<"请输入他的其他的信息:"; cin>>info2.otherInfo; buddyList.addBuddy(info2); } usersBudList.push_back(buddyList); } } else if(cmd == 'I' || cmd=='i') { cout< string userId; cout<<"****************************************"< cout<<"请输入用户账号(以0结束):"< cin>>userId; if(userId=="0") break; vector int i =0; for( it1= usersBudList.begin(); it1 != usersBudList.end(); ++it1,++i) { if(it1->getM