how do i store and get a queue of structure?

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)

jua*_*nza 6

您可以将一个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)