vector的reserve(),resize(),capacity()
2015-07-28 09:11
771 查看
1:vetor<int> a;
a.reserve(100);
代表预留空间是100,capacity()的返回值也是就100;
vector功能和数组相似,capacity类似于我们通常预设定的数组的最大元素个数,如a[10],代表的就是a数组最多10个元素;
代码如下:
输出的结果:
making foo grow:
capacity changed: 1
capacity changed: 2
capacity changed: 4
capacity changed: 8
capacity changed: 16
capacity changed: 32
capacity changed: 64
capacity changed: 128
making bar grow:
capacity changed: 100
2:a.resize(n,m) or a.resize(n)
n代表的就是重新设置vector元素的多少
n大于你之前的size()时,会加上 n-size() 个元素值为m的元素(若m没有,就设置为默认值0);
n小于你之前的size()时,会删除 下标为 n~size()-1 的元素。
a.reserve(100);
代表预留空间是100,capacity()的返回值也是就100;
vector功能和数组相似,capacity类似于我们通常预设定的数组的最大元素个数,如a[10],代表的就是a数组最多10个元素;
代码如下:
// vector::reserve #include <iostream> #include <vector> int main () { std::vector<int>::size_type sz; std::vector<int> foo; sz = foo.capacity(); std::cout << "making foo grow:\n"; for (int i=0; i<100; ++i) { foo.push_back(i); if (sz!=foo.capacity()) { sz = foo.capacity(); std::cout << "capacity changed: " << sz << '\n'; } } std::vector<int> bar; sz = bar.capacity(); bar.reserve(100); // this is the only difference with foo above std::cout << "making bar grow:\n"; for (int i=0; i<100; ++i) { bar.push_back(i); if (sz!=bar.capacity()) { sz = bar.capacity(); std::cout << "capacity changed: " << sz << '\n'; } } return 0; }
输出的结果:
making foo grow:
capacity changed: 1
capacity changed: 2
capacity changed: 4
capacity changed: 8
capacity changed: 16
capacity changed: 32
capacity changed: 64
capacity changed: 128
making bar grow:
capacity changed: 100
2:a.resize(n,m) or a.resize(n)
n代表的就是重新设置vector元素的多少
n大于你之前的size()时,会加上 n-size() 个元素值为m的元素(若m没有,就设置为默认值0);
n小于你之前的size()时,会删除 下标为 n~size()-1 的元素。
相关文章推荐
- Java内存模型
- PHPStorm的资料网址
- POP介绍与使用实践(快速上手动画)
- 源码推荐(7.28):习惯了的Sqlite,自己动手造一个可以深度自定义的图片选择器
- android网络操作I: OkHttp, Volley以及Gson
- Core Graphics Tutorial Part 3: Patterns and Playgrounds
- final、static关键字
- 【HDOJ 1150】Machine Schedule
- 【图文教程】如何将Apple Watch应用提交到App Store
- iOS可持续化集成: Jenkins+bundler+cocoapods+fastlane
- 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作
- mybatis 配置文件mysql常用语句写法总结
- uva 639 Don't Get Rooked ( 回溯 )
- Android基础_页面布局_TableLayout(表格布局)
- 使用Playground学习数值算法
- java.lang.NoClassDefFoundError: org/slf4j/Logger
- Javascript bind 与 jQuery bind
- SAP实施不成功就像女人丰乳没效果
- java中的IO整理
- 微信公众号中如何展开、隐藏内容