我正在进行一项关于C ++的练习,它要求模拟一个服务队列,并要求用一个圆形的一维数组进行操作。所以它要求,当一个客户来到队列中时,他的名字,数字他的卡和到队时间。
所以我的第一个问题是如何在数组的一个位置输入所有这些元素?(我不知道它是否被称为数组或位置的单元格,英语不是我的本机)每个客户都必须占用只有阵列的一个位置,我必须将他的所有信息插入一个位置。我已经知道如何从圆形队列中插入或提取元素的条件我只是不知道如何为它们做很多。
其次,它要求打印客户排队等待的时间,具体取决于人们在他之前等待的人数(尽管不一定太精确)。
答案 0 :(得分:1)
对于第一个问题:您能否创建一个表示数据集合的类或结构,并将整个结构放入容器中?
(编辑:客户现在是一个类,有一个构造函数;添加了实例化示例) 你需要稍微清理一下,但是有点像:
class Customer {
private:
std::string m_name;
int m_card_number;
int m_arrival_time;
public:
Customer() : m_card_number(0), m_arrival_time(0) { } // might need default ctor
Customer(const std::string name, int card_number, int_arrival time)
: m_name(name), m_card_number(card_number), m_arrival_time(arrival_time)
{ }
};
std::dequeue<Customer> service_queue; // or your container here
Customer c = Customer(name, card_num, current_time);
service_queue.push_back(c);
对于第二个问题;如果你不需要坚持时间,只需要处理差异,一个解决方案是使用clock。一旦你拿走你的时差(以刻度表示)并且需要转换为秒数,就不要忘记除以CLOCKS_PER_SECOND。
答案 1 :(得分:0)
我会将结构推入队列,每个结构都将包含所需的必要元素。
struct Customer
{
string name;
int ID;
double change;
}
//in add function...
Customer newCustomer
cin >> newCustomer.name >> newCustomer.ID >> newCustomer.change;
queue.push_back(newCustomer);
retreiving data is simply asking for each element
//in a loop printing out the queue
std::cout << iter->name << iter->ID << iter->change