一、介绍

vector容器提供了很多个构造函数,有的构造函数同时也提供了初始化或赋值功能,这很大程度上方便了我们构造vector对象,下面是我们常用的5种构造函数。

1.vector();
说明:无参构造函数,构造一个vector对象,但未进行初始化,此时元素个数为0。

2.vector( size_type num );
说明:size_type 是size_int的别名,属于unsigned int,即无符号整形。该构造函数将创建一个能容纳num个元素的vector对象,如果vector的型别是int,则这些元素都初始化为0;如果是char,则为‘\0’;如果是string,则是“”空字符串。

3.vector( size_type num, const TYPE &val );
说明:构造一个能容纳num个元素的vector对象,并且初始值都设置为val。

4.vector( const vector &from );
说明:创建一个vector对象,并且把from的值赋值给新创建的对象。

5.vector( input_iterator start, input_iterator end );
说明:创建一个vector对象,并且input_iterator对象从start位置到end位置的数值付给新创建的对象。


二、代码

下面对以上的构造函数进行一个简单使用测试:


//构造函数
void test_construct(void)
{vector<int> v1, v2(5), v3(5, 10), v4(v2), v5(v3.begin(), v3.end() - 2);cout << "v1:" << endl;cout << "v1.size():" << v1.size() << endl;copy(v1.begin(), v1.end(), ostream_iterator<int, char>(cout, " "));cout << endl << "v2:" << endl;copy(v2.begin(), v2.end(), ostream_iterator<int, char>(cout, " "));cout << endl << "v3:" << endl;copy(v3.begin(), v3.end(), ostream_iterator<int, char>(cout, " "));cout << endl << "v4:" << endl;copy(v4.begin(), v4.end(), ostream_iterator<int, char>(cout, " "));cout << endl << "v5:" << endl;copy(v5.begin(), v5.end(), ostream_iterator<int, char>(cout, " "));cout << endl;vector<char> v6(5);cout << endl << "v6:" << endl;copy(v6.begin(), v6.end(), ostream_iterator<char, char>(cout, " "));cout << endl;cout << "v6.size():" << v6.size() << endl;for(vector<char>::iterator ite = v6.begin(); ite != v6.end(); ite++){if(*ite == '\0'){cout << "v6的元素为'\0'!" << endl;}}vector<string> v7(5);cout << endl << "v7:" << endl;//string 类型的 类型的型别vector 容器 容器不支持copy 输出//copy(v7.begin(), v7.end(), ostream_iterator<string, char>(cout, " "));cout << endl;cout << "v6.size():" << v7.size() << endl;for(vector<string>::iterator ite = v7.begin(); ite != v7.end(); ite++){if(*ite == ""){cout << "v7的元素为\"\"!" << endl;}}
}

三、结果及分析

1.结果如下:

2.分析

从v1到v5的输出结果来看,很好理解以上的5个构造函数的用法。v1到v5的vector的元素型别是int,那么如果是char和string,vector容器如何初始化呢?从v6和v7的测试结果来看,可以知道,char型别的vector容器中的元素的初始值被设置为’\0’,string型别的vector容器中的元素的初始值被设置为空字符串。

以上就是常用的5个构造函数的简单用法,如果有错误的地方,欢迎指正!

vector构造函数的使用相关推荐

  1. C++ STL vector构造函数

    文章目录 一. 定义 复杂度: 一. 定义 std::vector<T,Allocator>::vector 1 vector(); vector() noexcept(noexcept( ...

  2. C++ vector构造函数

    vector(向量)是向量类型,使用需要包含头文件#include<vector>; vector是一个封装了动态大小数组的顺序容器,跟其他任意类型的容器一样,它能够存放各种类型的对象,可 ...

  3. C++vector容器-构造函数

    vector数据结构和数组非常相似,也称为单端数组,在数组的尾段可以做插入,删除操作 vector不同于普通数组,vector可以动态扩展 动态扩展:并不是在原空间之后续接新空间,而是找更大的内存空间 ...

  4. C++线性序列容器vector简单总结

    C++线性序列容器<vector>简单总结 vector是一个长度可变的数组,使用的时候无须声明上限,随着元素的增加,Vector的长度会自动增加:Vector类提供额外的方法来增加.删除 ...

  5. c++STL之vector简易使用

    使用vector需要包含头文件vector 构造函数 C++vectors 可以使用以下任意一种参数方式构造: 语法 vector(); vector(size_type num, const TYP ...

  6. Java 集合系列06: Vector深入解析

    戳上面的蓝字关注我们哦! 精彩内容 精选java等全套视频教程 精选java电子图书 大数据视频教程精选 java项目练习精选 概论 这是接着以前的文章分享的,这里给出以前的文章的连接,供小伙伴们回顾 ...

  7. c++ vector 赋值_Vector 源码剖析

    喜欢请点关注 Vector简介 Vector也是基于数组实现的,是一个动态数组,其容量能自动增长. Vector是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是相对 ...

  8. C++STL的vector容器

    C++STL的vector容器 vector容器 vector基本概念 vector构造函数 vector赋值操作 vector容量和大小 vector插入和删除 vector数据存取 vector互 ...

  9. Java ArrayList、LinkedList和Vector的使用及性能分析

    第1部分 List概括 List 是一个接口,它继承于Collection的接口.它代表着有序的队列. AbstractList 是一个抽象类,它继承于AbstractCollection.Abstr ...

最新文章

  1. K近邻算法KNN的简述
  2. 脑机接口创造“第六感”:激活特定神经元,大鼠训练出新感官,逃出水迷宫,像用视觉一样轻松...
  3. WordPress在Permalink取消index.php后nginx404的解决方案
  4. C语言定义一个头节点,一个关于C语言链表头结点的问题
  5. a标签的href传递信息
  6. linux下更新JDK版本
  7. File Manipulation
  8. linux应用--yum
  9. (三)MFC学习之动画
  10. 运行通达信行情接口软件的电脑需要什么配置?
  11. WMB专题之ESQL
  12. 为什么 BI 软件都搞不定关联分析
  13. 2014十大的安全工具(ToolsWatch.org投票选出)
  14. mysql count sending data_深入分析MySQL Sending data查询慢问题
  15. 【毕设参考】ESP32 + HaaS Python打造可以统计流量的自动感应门系统
  16. [转]Java咖啡馆---叹咖啡
  17. SpringMvc学习日记-基础知识
  18. 论文-Deep Neural Networks are Easily Fooled: High Confidence Predictions for Unrecognizable Images
  19. 放肆的使用UIBezierPath和CAShapeLayer画各种图形(含仿微信视频眼镜Demo)
  20. 手把手教你写批处理-批处理的介绍

热门文章

  1. 洛谷P6771 Space Elevator 太空电梯
  2. 全向轮三轮小车的搭建(二)
  3. toString函数
  4. 重写类的ToString方法
  5. WPF X18的TX Text Control .NET v28
  6. 缺少技术大拿,技术难题解决不了,怎么办?
  7. 蓝桥杯 算法训练 星际交流
  8. 正则表达式-开头和结尾匹配
  9. 前端(一)html、css-学习笔记整理
  10. R2s便捷访问光猫设置