ism*_*sme 2 c++ queue struct structure
How do I store and get value of structure into a queue where I have 2 values? I wanna queue this few values.
| 4 , 2 |
| 3, 5 |
Where by 4,2 and 3,5 can be a variable such as
primaryQ.push(a, b);
Run Code Online (Sandbox Code Playgroud)
My structure:
struct primarytemp{
double process;
double secondary;
};
Run Code Online (Sandbox Code Playgroud)
Here's how I declared my main:
int main(){
queue<primarytemp> primaryQ;
primaryQ.push(4, 2);
}
Run Code Online (Sandbox Code Playgroud)
您可以将一个primarytemp对象推入队列,而无需修改类型:
queue<primarytemp> q;
q.push(primarytemp{4., 2.}); // Requires current C++ standard (C++11)
primarytemp p = {3., 5.};
q.push(p); // Also works pre-C++11
Run Code Online (Sandbox Code Playgroud)
正如其他人所提到的,您可以向 中添加一个构造函数primarytemp,尽管这意味着它不再是一个聚合。这可能无关紧要。
primarytemp
{
primarytemp() : process(), secondary() {}
primarytemp(double process, double secondary)
: process(process), secondary(secondary) {}
double process;
double secondary;
};
Run Code Online (Sandbox Code Playgroud)
这让你可以说
q.push(primarytemp(4., 2.)); // Also works pre-C++11
Run Code Online (Sandbox Code Playgroud)
要访问您刚刚推送的元素,请使用back()返回引用的方法:
std::cout << "process" << q.back().process() << std::endl;
Run Code Online (Sandbox Code Playgroud)
您也可以复制该元素:
primarytemp = q.back();
Run Code Online (Sandbox Code Playgroud)
该front()方法允许您对队列中的第一个元素执行相同的操作。
要删除前面的元素:
q.pop();
Run Code Online (Sandbox Code Playgroud)