首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

容器类中reserve()的用法、作用?解决办法

2012-02-27 
容器类中reserve()的用法、作用?比如vector中vector classAList//classA是一个类类型List.reserve(4)//

容器类中reserve()的用法、作用?
比如vector中

vector <classA>   List;     //classA   是一个类类型
List.reserve(4);             //什么作用???不用这个函数有什么不妥?
                                            //和resize()有什么区别??


[解决办法]
使Vector能容纳下4个元素而无需重新分配内存
[解决办法]
vector <int> List;
//List.reserve(3); //把这的注释去掉再看看结果..
List.push_back(0);
cout < < List.capacity();
List.push_back(1);
cout < < List.capacity();
List.push_back(2);
cout < < List.capacity();
[解决办法]
如果重新分配空间的话, 会new move数据 然后释放原来的内存, 效率低, 如果用reserve预先申请一定大小的空间,提高效率...
[解决办法]
可是我在vs2005下运行aipb2006() 的程序注释后输出的是123,是编译器作了调整吗?
[解决办法]
reserve()函数 并不是必须的.
[解决办法]
reserve()就是用来显示的指定你要的这个vector的容量capacity的.
也就是说,
你指定它能最多装得下多少个元素,
如果capacity不够了它还会自动增长,
reserve(4)就是指定了这个容量capacity的大小是4.

resize()就是重新来手动设置这个vector长度size的大小
resize(8)就是把这个vector的size设为了8,
如果原来的size是4,
那么现在长度为8,
另外的4个新元素调用缺省构造函数初始化
[解决办法]
reserve(4)就是指定了这个容量capacity的大小最小为4.
resize()就是重新来手动设置这个vector长度size的大小,并且将分配空间的值初始化为0


[解决办法]
大家都说得差不多了,
reserve(4)就是指定了这个容器的初始容量capacity的大小最小为4.
resize()就是重新来手动设置这个vector长度size的大小,并且将分配空间的值初始化为0

--------------
resize()之后,就可以直接使用下标[]对容器的元素进行赋值修改,用reserve()则还不行.

热点排行