将结构体加入队列的步骤:
(1)定义结构体。
(2)创建一个queue对象。
(3)使用queue的成员函数push()将结构体添加到队列。
这里面的重点在于用push将结构体加入队列时参数的写法,其实它的参数就是一个结构体的实例。因此其写法与结构体的初始化方式相同,有两种常见写法:
1.利用结构体构造函数初始化
这种方式需要先在结构体中写个了构造函数,然用利用构造函数对结构体进行初始化。
这种方式需要先在结构体中写个了构造函数,然用利用构造函数对结构体进行初始化。
struct point {
int x, y;
point (int x_, int y_) : x(x_), y(y_) {} //结构体构造函数
};
queue <point> q; //声明名为q的队列,用于存储point类型的对象。
q.push(point (9, 5));
2.利用列表初始化
列表初始化也称花括号初始化,这种语法允许直接在需要对象的地方使用花括号来初始化其成员,而无需显式调用构造函数。这种方式是在C++11才开始支持的初始化方式。
struct point {
int x, y;
};
queue <point> q;
q.push({2, 7}); // 使用列表初始化来创建 point 对象
最后一行代码也可以写成下面这种形式:
q.push((point){2, 7});
但这里指定结构体类型是没有必要的,因为编译器可以通过上一行代码自动推导参数的类型为point型,因此前者写法更为简洁。