相关疑难解决方法(0)

为C++ STL队列预分配空间

我正在使用队列编写基数排序算法,我想在开始向队列添加内容之前让STL队列分配空间,这样我就可以避免持续的动态调整大小操作.

即使这不存在,我想要的东西具有...的效果

queue<int> qs(N);
for(int i=0;i<N;++i)
  qs.push(rand());
Run Code Online (Sandbox Code Playgroud)

以这种方式,它不会在循环期间动态分配任何内存.

有问题的实际代码......

void radix_sort()
{
// Biggest number?
int max=-1;
for(int i=0;i<N;++i)
    if(a[i]>max)
        max = a[i];

// How many digits in it
int maxdigits=1;
while(max /= 10) maxdigits++;

// Create some buckets.
deque<int> b[10];
for(int i=0;i<10;++i)
    b[i] = deque<int>(N);

int div=1;
// Radix Sort by digits
for(int d=1;d<=maxdigits;++d)
{
    if(d>1)
        div*=10;

    // Queue
    for(int i=0;i<N;++i)
        b[ (a[i]/div) % 10 ].push_front(a[i]);

    // Dequeue
    int k=0;    
    for(int q=0;q<10;++q)
        while(b[q].size() > 0)
        {
            a[k++] = b[q].back(); …
Run Code Online (Sandbox Code Playgroud)

c++ memory queue performance stl

26
推荐指数
2
解决办法
2万
查看次数

标签 统计

c++ ×1

memory ×1

performance ×1

queue ×1

stl ×1