请教一个关于队列的效率的问题

tangtangbaobao 2008-12-06 04:22:11
一个队列数据结构,
每次都需要pop和push大量的元素,一般有几千几万个,
如果使用C++的queue 或者 MFC的CList 都只能一个一个的pop和push,
请问如何快速高效率的一次pop和push大量的元素, 使用memcpy之类的函数。
...全文
146 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangtangbaobao 2008-12-10
  • 打赏
  • 举报
回复
谢谢各位, 准备用大数组来试一试。
shyli 2008-12-09
  • 打赏
  • 举报
回复
3楼的思路是对的

#include <iostream>
using namespace std;
const int maxn = 1000000;
int top; // 栈顶位置
int ary[maxn];
void push(int a[], int size)
{
for (int i = 0; i < size; i++)
ary[top++] = a[i];
}
void pop(int out[], int size)
{
for (int i = 0; i < size; i++)
out[i] = ary[--top];
}
int main()
{
int a[5] = {1, 2, 3, 4, 5}, b[5];
push(a, 5);
pop(b, 5);
for (int i = 0; i < 5; i++)
cout<<b[i]<<' ';
cout<<endl;
}

当然上面的程序是实现思路
没有判断栈空时pop和栈满时push的情况。
Super.Jiju 2008-12-07
  • 打赏
  • 举报
回复
我知道vector里面有个reserve()
然后就可以像数组那样赋值了
x[0]=...
x[k]=..
  • 打赏
  • 举报
回复
可以开一个大数组来进行循环使用,只要记录清楚当前头和尾的位置就可以了。
hityct1 2008-12-06
  • 打赏
  • 举报
回复
一次取大量的元素,这个行为不像是队列了。
可以自己定义一个类,它表示的数据是有若干的连续空间组成的。

class MyQueue
{
.....
private:
vector< vector<elm> > m_Data;
}
我们可逻辑上把m_Data看成连续的空间。效率应该提高不少。
sagegz 2008-12-06
  • 打赏
  • 举报
回复
没有研究...帮顶!

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧