相关疑难解决方法(0)

使用的内存:std :: list vs std :: forward_list

因为list还有一个指针(前一个指针)而不是forward_list,所以如果它们都拥有相同数量的元素,即1 << 30,则list将使用几乎1/3的内存.对?

然后,如果我重复调用越来越大的调整大小,则forward_list必须能够调整大于列表的大小.

测试代码:

#include<forward_list>
#include<list>
#include<iostream>
int main(){
    using namespace std;
    typedef list<char> list_t;
    //typedef forward_list<char> list_t;
    list_t l;
    list_t::size_type i = 0;
    try{
        while(1){
            l.resize(i += (1<<20));
            cerr<<i<<" ";
        }
    }
    catch(...){
        cerr<<endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,当这个过程被杀死时,它们的大小几乎相同......有人可以解释它吗?

list

9
推荐指数
2
解决办法
5070
查看次数

标签 统计

list ×1