【发布时间】:2011-01-21 11:51:25
【问题描述】:
如何创建队列向量,如何添加元素?
我希望能够做到以下几点:
- 在向量中插入一个新队列
- 将新元素插入队列
那在向量里面。
:D
【问题讨论】:
如何创建队列向量,如何添加元素?
我希望能够做到以下几点:
- 在向量中插入一个新队列
- 将新元素插入队列
那在向量里面。
:D
【问题讨论】:
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.
【讨论】:
你可以这样做:
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;
}
【讨论】:
typedef std::queue<int> IntQueue;
typedef std::vector<IntQueue> IntQueueVector
IntQueueVector myVector;
1)
myVector.push_back(IntQueue());
2)
myVector.back().push(1);
【讨论】:
IntQueue。向量也一样,你不写 std::vectorqueue 具有允许它在 std::vector 中使用的语义,因此您可以在添加时像任何其他向量一样使用它,例如使用 push_back 将队列添加到向量中。
使用 push() 插入队列,因为您只能推入一端。您可以通过 operator[] 访问队列,例如queuevec[i],其中 i 是您希望使用的队列号。
如果在多线程上下文中使用它,则两个不同的线程可以安全地访问向量中的两个不同队列而无需锁定,但两个线程访问同一个队列是不安全的。如果您将队列添加到向量,这可能会使向量中的所有其他队列在此期间被“移动”无效,因此您需要锁定互斥体才能执行此操作。
【讨论】: