在我的项目中,我使用std :: queue类。我想知道如果我做以下事情会发生什么。如何在队列中使用内存?
- 获取队列中某个元素的指针(注意:指针而不是迭代器)。
- 我做出像在队列push和pop的队列修改(弹出元件,其不是由以前的指针指向)
难道我的指针我在开始的时候指定相同的元素仍指向?它是由队列规范定义的吗?
在我的项目中,我使用std :: queue类。我想知道如果我做以下事情会发生什么。如何在队列中使用内存?
难道我的指针我在开始的时候指定相同的元素仍指向?它是由队列规范定义的吗?
std::queue
使用序列容器来实现它。默认情况下,使用std::deque
。对于std::deque
,只要所有插入和擦除位于容器的开始或结束处,对容器中元素的引用和指针都不会失效。
但是,我不知道你将如何得到一个指向队列中的元素的指针;它没有为此提供功能(您只能获得对队列中第一个和最后一个元素的引用)。
改为使用std :: deque。 std :: queue旨在防止用户执行任何非队列操作。
好的,但它并没有真正回答我的问题。 (std ::队列使用std :: dequeue)。如果我得到一个元素的引用(指针),并且如果我做了一个push/pop动作。该参考是否失效? – Phong 2010-07-20 07:41:56
对不起,我误解了你的问题。指向默认队列元素的迭代器或指针可能会在推送或弹出时失效。但是,你可以创建一个std :: queue
其实我必须为我的库C++使用std :: queue生成一个包装器C.用户希望能够通过指针使用数据(他喜欢根据需要修改规范)。打算使用迭代器来获取指向元素的指针,但没有保险就没关系或不... – Phong 2010-07-20 07:38:23
@Phong:'std :: queue'没有迭代器。 – 2010-07-20 12:56:01
我的错误,你是对的。 – Phong 2010-07-21 00:42:01