如何创建队列向量,以及如何添加元素?
我希望能够做到以下几点:
- 将新队列插入矢量
- 将新元素插入队列
那是在矢量中。
:d
答案 0 :(得分:9)
vector<queue<int>> vec; // vector of queues
vec.push_back(queue<int>()); // add a queue
vec[0].push(1); // push 1 into queue number 0.
答案 1 :(得分:1)
您可以这样做:
int main( void )
{
typedef std::queue<int> Q;
std::vector<Q> v;
//Add a new queue to vector
v.push_back(Q());
//Add an element to the queue
v[0].push(1);
return 0;
}
答案 2 :(得分:1)
typedef std::queue<int> IntQueue;
typedef std::vector<IntQueue> IntQueueVector
IntQueueVector myVector;
1)
myVector.push_back(IntQueue());
2)
myVector.back().push(1);
答案 3 :(得分:1)
queue具有允许在std :: vector中使用的语义,所以你可以像添加任何其他向量一样使用它,例如使用push_back为向量添加队列。
使用push()插入队列,因为只能推入一端。您可以通过operator []访问队列,例如queuevec[i]
,其中i是您要使用的队列号。
如果在多线程上下文中使用它,则两个不同的线程可以安全地访问向量中的两个不同的队列而不进行锁定,但是两个线程访问同一队列是不安全的。如果向向量添加队列,如果它们被“移动”,则可能会在此期间使向量中的所有其他队列无效,因此您需要锁定互斥锁才能执行此操作。