C++中,对一个空的容器 用reserve(10) , 如 vector<int> ttt; ttt.reserve(10); ttt会有10个容量吗?

如果用ttt.resize(10);
又会怎么样???
大神指教一下 。。。谢谢!!!!
一个空的vector对象经过reserve(10)还是空的?但是用resize(10)就有10个容量了 ???是这样的吗??

reserve(10)将为容器保留至少10的容量(不小于resver的参数).这个函数只负责调整可用空间大小.不对容器中现有数据和大小造成影响.如果容器现有容量已经超过10.则不会有任何影响.
可用使用capacity()函数查看当前容器的预留空间大小
resize(10)将对容器造成实际影响.即将容器的大小调整为10.
如若容器现有数据超过10.则被截断到10.如果现有数据不到10在使用默认的数据将容器大小填充到10.对于vector<int>则,其默认数据为int(0).
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-19
reserve操作告诉容器应预留多少元素的存储空间,resize可以调整容器的大小
第2个回答  2011-04-19
http://by2003yb.blog.163.com/blog/static/3269181320076303727977/
你可以看看,应该可以解决你的问题。本回答被提问者采纳
第3个回答  2011-04-19
reserve是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用容器内的元素,因此当加入新的元素时,需要用push_back()/insert()函数。
resize是改变容器的大小,并且创建对象,因此,调用这个函数之后,就可以引用容器内的对象了,因此当加入新的元素时,用operator[]操作符,或者用迭代器来引用元素对象。
再者,两个函数的形式是有区别的,reserve函数之后一个参数,即需要预留的容器的空间;resize函数可以有两个参数,第一个参数是容器新的大小,第二个参数是要加入容器中的新元素,如果这个参数被省略,那么就调用元素对象的默认构造函数

...如 vector<int> ttt; ttt.reserve(10); ttt会有10个容量吗?_百度...
reserve(10)将为容器保留至少10的容量(不小于resver的参数).这个函数只负责调整可用空间大小.不对容器中现有数据和大小造成影响.如果容器现有容量已经超过10.则不会有任何影响.可用使用capacity()函数查看当前容器的预留空间大小 resize(10)将对容器造成实际影响.即将容器的大小调整为10.如若容器现有数据超过...

...如果有一个容器vector<int>v,然后v.reserve(10),我想把第三个元素...
vector<int> v;v.reserve(10);\/\/此时v的元素个数为0 cout<<"size of v:"<<v.size()<<endl;v.resize(10);\/\/此时元素个数为10 cout<<"size of v:"<<v.size()<<endl;for(int i=0;i<v.size();i++)cout<<v[i]<<" ";cout<<endl;v[3]=1000;\/\/下标从0开始计数 for(int...

C++容器使用reserve的重要性,以及如何释放多余内存
使用reserve成员函数在C++容器,如vector和string中进行元素追加之前,可以一次性分配所需大小的内存空间。这种做法避免了容器在元素数量增加时频繁进行内存重新分配的繁琐操作,从而提升程序效率。下面将详细讨论其必要性、示例以及如何合理释放容器中可能产生的多余内存。在使用vector或string进行数据操作时,若未...

c++小技巧——利用vector容器中的reserve接口预留空间
在处理大量数据时,频繁的调整C++中vector容器的内存容量会显著降低程序的运行效率。因此,合理利用vector的`reserve`接口预先分配所需内存空间,可以有效提升代码的执行速度。具体操作如下:举例说明,假设需要向vector中插入100000个元素。若不提前使用`reserve`接口,vector容器在插入数据过程中,会根据需求动态...

c++中,vector和deque容器都可以用reserve函数吗??
只有vector有reserve用来申请保留存储空间,deque是没有的。

vector 在c++中resize 和reserve的区别
resize就是重新分配大小,reserve就是预留一定的空间。这两个接口即存在差别,也有共同点。下面就它们的细节进行分析。为实现resize的语义,resize接口做了两个保证:一是保证区间[0, new_size)范围内数据有效,如果下标index在此区间内,vector[indext]是合法的。二是保证区间[0, new_size)范围以外数据...

vector c++ 用法
vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector 是C++ STL的一个重要成员,使用它时需要包含头文件:includevector;一、vector的初始化 (1) vectorint a(10); \/\/定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出...

C++ STL :Vector内存分配与释放
由于vector的内存占用空间只增不减,我们常用的操作clear()和erase(),实际上只是减少了size(),清除了数据,并不会减少capacity,所以内存空间没有减少。正确的做法是swap()操作,通过生成一个空的vector容器并交换给原容器,从而达到内存释放的目的。完整测试代码:参考文章:reserve和resize_lusic01的专栏...

C++语法高手进
int ia[10];第一个元素的地址: ia或者是&ia[0]第二个元素的地址: ia 1或者是&ia[1]15. STL中vector有两种不同的使用形式:数组习惯,即使用下标操作符,注意只能操作已经存在的成员;STL习惯,使用iterator来操作,对其解引用可以访问实际的对象,也可以通过加减来移动位置。雷同与5。16. typedef用来为内置的或...

C++泛型算法 一个vector的fill_n()操作问题
fill_n()把value 的拷贝赋给[first,first+count)范围内的count 个元素 是赋值过去, 插入新值你得自己给他插入迭代器 reserve是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用容器内的元素 没有已被分配的空间来保存, 赋值会失败, 或者说导致未定义的运行时刻行为, 你可以换成...

相似回答