1

我正在做一个关于 C++ 的练习,它要求模拟一个服务队列,它要求用一个圆形的一维数组来完成它。所以它要求,当客户在队列中插入他的名字时,他的卡号以及队列中的到达时间。

所以我的第一个问题是如何在数组的一个位置输入所有这些元素?(我不知道它是否称为数组单元或位置,英语不是我的母语)每个客户只需要占据一个位置数组,我必须将他的所有信息插入一个位置。我已经知道如何从圆形队列中插入或提取元素的条件我只是不知道如何为它们中的许多人做这件事。

其次,它要求打印客户必须在队列中等待的时间,具体取决于在他之前等待的人数(尽管不必太精确)。

4

2 回答 2

1

对于第一个问题:您能否创建一个表示数据集合的类或结构,并将整个结构放入您的容器中?

(编辑:Customer 现在是一个类,有一个构造函数;添加了实例化示例)您需要稍微清理一下,但类似于:

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 一旦你得到你的时间差(以滴答为单位)并且需要转换为秒。

于 2012-11-01T18:56:04.087 回答
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
于 2012-11-01T19:59:59.083 回答