• 最近写了一个小型的STL--TinySTL。发现有一些基础的东西需要记录下来,所以我打算多写一些东西,方便以后查看。
  • 先看看《C++ Primer》中对resize()函数两种用法的介绍:

    1、resize(n)

    调整容器的长度大小,使其能容纳n个元素。

    如果n小于容器的当前的size,则删除多出来的元素。

    否则,添加采用值初始化的元素。

    2、 resize(n,t)

    多一个参数t,将所有新添加的元素初始化为t。

    而reserver()的用法只有一种

    reserve(n)

    预分配n个元素的存储空间。

    了解这两个函数的区别,首先要搞清楚容器的capacity(容量)与size(长度)的区别。

    size指容器当前拥有的元素个数;

    而capacity则指容器在必须分配新存储空间之前可以存储的元素总数。

    也可以说是预分配存储空间的大小。

    resize()函数和容器的size息息相关。调用resize(n)后,容器的size即为n。

    至于是否影响capacity,取决于调整后的容器的size是否大于capacity。

    reserve()函数和容器的capacity息息相关。

    调用reserve(n)后,若容器的capacity<n,则重新分配内存空间,从而使得capacity等于n。

    如果capacity>=n呢?capacity无变化。

    从两个函数的用途可以发现,容器调用resize()函数后,所有的空间都已经初始化了,所以可以直接访问。

    而reserve()函数预分配出的空间没有被初始化,所以不可访问。

STL-- vector中resize()和reserve()区别的更多相关文章

  1. vector中resize()和reserve()区别

    先看看<C++ Primer>中对resize()函数两种用法的介绍: 1.resize(n) 调整容器的长度大小,使其能容纳n个元素. 如果n小于容器的当前的size,则删除多出来的元素 ...

  2. vector中resize()和reserve()的区别

    先看看<C++ Primer>中对resize()函数两种用法的介绍: 1.resize(n) 调整容器的长度大小,使其能容纳n个元素. 如果n小于容器的当前的size,则删除多出来的元素 ...

  3. vector中resize和reserve的区别,代码验证

    #include <vector> using namespace std; int main() { vector<int> resizeVect; vector<in ...

  4. vector 的resize 和 reserve

    首先声明,都是转载的,理解知识为主要目的. http://www.cnblogs.com/zahxz/archive/2013/02/20/2918711.html C++内置的数组支持容器的机制,但 ...

  5. vector 的resize与reserve

    最近遇到一个坑,简单说来是resize与reserve的功能混淆了. 如下: 如果调用resize的化,编译会出错,如果给Text提供默认构造函数,则可以编译通过,最终输出的结果为10. 如果调用re ...

  6. vector的resize与reserve的区别

  7. vector性能调优之resize与reserve

    vector的resize与reserve reserve()函数为当前vector预留至少共容纳size个元素的空间.(译注:实际空间可能大于size) resize() 函数( void resi ...

  8. C++ Daily《2》----vector容器的resize 与 reserve的区别

    C++ STL 库中 vector 容器的 resize 和 reserve 区别是什么? 1. resize 改变 size 大小,而 reserve 改变 capacity, 不改变size. 2 ...

  9. 实战c++中的vector系列--copy set to vector(别混淆了reserve和resize)

    stl算法中有个copy函数.我们能够轻松的写出这种代码: #include <iostream> #include <algorithm> #include <vect ...

随机推荐

  1. LeetCode Employee Importance

    原题链接在这里:https://leetcode.com/problems/employee-importance/description/ 题目: You are given a data stru ...

  2. 前端用户输入校验--基于JQ

    <!DOCTYPE html> <html> <head> <title>用户输入校验</title> </head> < ...

  3. object.observe数据绑定

    object.observe方法格式如下: object.observe(object,callback) 监听object对象,当该对象有新增或更新或删除等操作,就会触发callback,就实现了双 ...

  4. python3 之初学者常犯的5个错误

    1. Creating a copy of dictionary or lists. Whenever you need to make a copy of a dictionary or list, ...

  5. PHP7卓越性能背后的原理有哪些?

    作者:韩天峰链接:http://www.zhihu.com/question/38148900/answer/75115687来源:知乎 PHP7在运行原理上与PHP5相比并没有变化,这与hhvm不同 ...

  6. 配置文件的继承与覆盖: Machine.config / Web.config /子目录 Web.config

    C#有三种级别的配置文件: 机器级别 machine.config 在 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.c ...

  7. java代码异常捕获throws抛出异常

    总结:Throwable 是所以异常的父类.error和Exception是继承它的类 Exception: 这类异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环 ...

  8. Python函数(一)-return返回值

    定义一个函数可以在最后加上return返回值,方便查看函数是否运行完成和返回函数的值 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR&qu ...

  9. 7-EasyNetQ之Request & Response

    EasyNetQ也支持Request/Response这种方式的消息模式.这种方式很容易在client/Server应用中执行,客户端发送一个请求到服务器,服务器然后处理请求后返回一个响应.和传统的R ...

  10. 在Linux下adb连接不上android手机的终极解决方案

    转自: http://blog.csdn.net/liuqz2009/article/details/7942569 1.做android开发的过程,碰到了Linux下adb识别不了android设备 ...