문제1: 이번에는 이 스택을 vector를 사용해 만들어보자.

문제2: '카트 라이더'와 같이 방을 만들어 게임을 하는 온라인 게임에서 방에 있는 유저를 관리하는 기능을 vector를 사용해 만들어 보자. 다음의 기본 클래스를 사용해 구현해보자.

#include <vector>
#include <string>

using namespace std;

// 유저 정보
struct UserInfo
{
	string userName; // 이름
	int level; // 레벨
	int exp; // 경험치
};

// 게임 방의 유저를 관리하는 클래스
// 방에는 최대 6명까지 들어 갈 수 있다.
// 방에 들어 오는 순서 중 가장 먼저 들어 온 사람이 방장이 된다.
class GameRoomUser
{
public:
	GameRoomUser();
	~GameRoomUser();

	// 방에 유저 추가
	bool AddUser(UserInfo& userInfo);

	// 방에서 유저 삭제.
	// 만약 방장이 나가면 userName에 새로운 방장의 이름을 설정 해야 된다.
	bool DeleteUser(const char* userName);

	// 방에 유저가 없는지 확인. 없으면 true 반환
	bool IsEmpty();

	// 방에 유저가 꽉 찼는지 확인. 꽉 찼다면 true 반환
	bool IsFull();

	// 특정 유저의 정보
	UserInfo& GetUserOfName(const char* userName);

	// 방장의 유저 정보
	UserInfo& GetMasterUser();

	// 가장 마지막에 방에 들어 온 유저의 정보
	UserInfo& GetUserOfLastOrder();

	// 특정 순서에 들어 온 유저를 쫒아낸다.
	bool BanUser(int orderNum);

	// 모든 유저를 삭제한다.
	void Clear();

private:
	vector<UserInfo> users;
	string masterUserName; // 방장의 이름
};

아래의 메인 함수 사용 예시를 참고해 구현해보자

#include "GameRoomUser.h"

ostream& operator<<(ostream& os, UserInfo& userInfo)
{
	return os << "UserName: " << userInfo.userName 
		<< ", Level: " << userInfo.level << ", Exp: " << userInfo.exp << endl;
}

int main()
{
	// 방 생성.
	GameRoomUser gameRoom;

	// 유저 추가.
	UserInfo user1("RonnieJ", 1, 30);
	gameRoom.AddUser(user1);

	UserInfo user2("Hamtol2", 10, 670);
	gameRoom.AddUser(user2);

	UserInfo user3("TaeJun", 5, 250);
	gameRoom.AddUser(user3);

	UserInfo user4("Oops", 32, 1250);
	gameRoom.AddUser(user4);

	UserInfo user5("Gamer", 40, 250);
	gameRoom.AddUser(user5);

	UserInfo user6("GameDev", 80, 3425);
	gameRoom.AddUser(user6);

	UserInfo user7("STL", 23, 890);
	gameRoom.AddUser(user7);

	// 방장 확인.
	UserInfo roomMaster = gameRoom.GetMasterUser();
	if (roomMaster.userName != "")
	{
		cout << "방장은 " << roomMaster.userName << " 입니다.\\n";
	}

	// 방장 밴.
	gameRoom.BanUser(1);

	// 3번 밴.
	gameRoom.BanUser(3);

	// GameDev의 레벨 확인.
	cout << "[TaeJun의 정보] " << gameRoom.GetUserOfName("TaeJun");

	// 마지막에 방에 들어온 유저 정보.
	cout << "[가장 마지막에 들어온 유저 정보] " << gameRoom.GetUserOfLastOrder();

	// 모든 유저 삭제.
	gameRoom.Clear();

	// 모든 유저 삭제 후 비었는지 확인.
	cout << (gameRoom.IsEmpty() == true ? "방이 비었습니다.\\n" : "방이 비어있지 않습니다\\n");

	cin.get();
}