原文地址:http://blog.csdn.net/zcsylj/article/details/7857009

int的大小是4,定义vector<int> vec,vec中有一个元素,sizeof(vec)=20,如果有1000个元素,则sizeof(vec)是多少?

 #include <iostream>  
#include <vector>  
using namespace std;  
int main()  
{  
     vector<int> vec;  
     for(int i=;i<;i++)  
     {  
        vec.push_back(i);  
        cout<<sizeof(vec)<<endl;   
        cout<<vec.size()<<endl;  
     }   
}  

输出结果:

   
  
……  
  
  
请按任意键继续. . .  

由此可以看出:sizeof(vec)只取决于vector里面存放的数据类型,与元素个数无关。该值应该是与编译器相关的。

 #include <iostream>  
#include <vector>  
using namespace std;  
int main()  
{  
    cout<<"sizeof(vector<char>) = "<<sizeof(vector<char>)<<endl;  
    cout<<"sizeof(vector<int>) = "<<sizeof(vector<int>)<<endl;  
    cout<<"sizeof(vector<short>) = "<<sizeof(vector<short>)<<endl;  
    cout<<"sizeof(vector<double>) = "<<sizeof(vector<double>)<<endl;  
    cout<<"sizeof(vector<long>) = "<<sizeof(vector<long>)<<endl;  
    cout<<"sizeof(vector<float>) = "<<sizeof(vector<float>)<<endl;  
    cout<<"sizeof(vector<bool>) = "<<sizeof(vector<bool>)<<endl;  
    cout<<"sizeof(vector<string>) = "<<sizeof(vector<string>)<<endl;  
}  

输出:

 sizeof(vector<char>) =   
sizeof(vector<int>) =   
sizeof(vector<short>) =   
sizeof(vector<double>) =   
sizeof(vector<long>) =   
sizeof(vector<float>) =   
sizeof(vector<bool>) =   
sizeof(vector<string>) =   
请按任意键继续. . .  

解释:
vector应该是从堆上分配内存,所有大小与元素个数无关

sizeof(vector)取决于vector类的具体实现,STL是个完全开放的东西,谁都可以来实现vector类。

通过查看STL源码可以看到vector有四个成员变量 
_A   allocator; 
iterator   _First,   _Last,   _End;

每个指针是4个字节,因此16字节。20字节的是不是添加了什么指针呢

C++:STL vector:sizeof(vector)的更多相关文章

  1. c++ :STL

    基础知识 容器 容器就是一些模板类的集合,不同之处就是容器中封装的是数据结构 1.序列容器 主要有vector向量容器.list列表容器.deque双端队列容器 元素在容器中是无序的 2.排序容器 包 ...

  2. STL学习:STL库vector、string、set、map用法

    本文仅介绍了如何使用它们常用的方法. vector 1.可随机访问,可在尾部插入元素:2.内存自动管理:3.头文件#include <vector> 1.创建vector对象 一维: (1 ...

  3. STL review:vector & string & map & struct

    I.vector 1.头文件:#include<vector>                        //容器vector是一个能实现随机存取.插入删除的动态数组,还可以当栈使. ...

  4. C++ 标准模板库(STL):vector

    目录 1. vector 1.1 vector的定义 1.2 vector容器内元素的访问 1.3 vector 常用函数实例解析 1.4 vector的常见用途 1. vector 变长数组,长度根 ...

  5. paper 5:支持向量机系列二: Support Vector —— 介绍支持向量机目标函数的 dual 优化推导,并得出“支持向量”的概念。

    paper 4中介绍了支持向量机,结果说到 Maximum Margin Classifier ,到最后都没有说“支持向量”到底是什么东西.不妨回忆一下上次最后一张图: 可以看到两个支撑着中间的 ga ...

  6. vector:动态数组

    vector是C++标准模板库中的部分内容,中文偶尔译作“容器”,但并不准确.它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存 ...

  7. Java集合系列(二):ArrayList、LinkedList、Vector的使用方法及区别

    本篇博客主要讲解List接口的三个实现类ArrayList.LinkedList.Vector的使用方法以及三者之间的区别. 1. ArrayList使用 ArrayList是List接口最常用的实现 ...

  8. 面试题:ArrayList、LinkedList、Vector三者的异同?

    面试题:ArrayList.LinkedList.Vector三者的异同? 同:三个类都是实现了List接口(Collection的子接口之一),存储数据的特点相同:存储有序的.可重复的数据不同: * ...

  9. STL顺序容器【vector】【deque】【list】

    我们都知道,stl在集装箱船分为两类,订购集装箱和相关的容器. 顺序容器有三种即动态数组vector,双端队列deque,以及链表list (对csdn的文字排版严重吐槽.写好的版发表了就变了) 一: ...

随机推荐

  1. LOJ 2664. 「NOI2013」向量内积 解题报告

    #2664. 「NOI2013」向量内积 两个 \(d\) 维向量 \(A=[a_1, a_2 ,...,a_d]\) 与 \(B=[b_1 ,b_2 ,...,b_d]\) 的内积为其相对应维度的权 ...

  2. job.yml

    job.yml apiVersion: batch/v1kind: Jobmetadata: name: myjobspec: completions: 6 parallelism: 2 templa ...

  3. Mongodb中经常出现的错误(汇总)child process failed, exited with error number

    异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 异常处理汇总-数据库系列  http://www.cnblogs.com/dun ...

  4. java 线程栈 & java.lang.StackOverflowError

    网上搜索了一下,关于java的线程栈: JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K. JVM的内存,被划分了很多的区域: (来源:http://www.iteye.com/ ...

  5. [Nginx] – 性能优化 – 配置文件优化

    Nginx基本安全优化 1.调整参数隐藏Nginx版本号信息     一般来说,软件的漏洞都和版本有关,因此我们应尽量隐藏或清除Web服务队访问的用户显示各类敏感信息(例如:Web软件名称及版本号等信 ...

  6. 中南大学2018年ACM暑期集训前期训练题集(入门题) X: 又一道简单题

    简直智障,上一题V题,样例输出里面的“Case:”不要输出,到了这题又是要输出的了 #include<iostream> using namespace std; int num[1000 ...

  7. 在Kubernetes集群中安装Helm及证书认证

    安装Kubernetes 测试环境使用kubeadm安装kubernetes v1.6.3版本, 安装过程略过. 为Helm创建客户端认证 客户端认证是为了能够使用helm命令行调用Helm的服务端T ...

  8. Prometheus Node_exporter

    Node Exporter node_exporter 主要用于 *NIX 系统监控, 用 Golang 编写. 功能对照表 默认开启的功能 名称 说明 系统 arp 从 /proc/net/arp ...

  9. Cleanup failed to process the following paths错误的解决

    在使用TortoiseSVN工具执行Cleanup操作时经常出现Cleanup failed to process the following paths的错误,具体如下图: 网上搜索了一下,找到了解 ...

  10. 安装使用hibernate tools

    help-Eclipse marketplace-hibernate(搜索)-jboss tools(安装)