vector是C++标准库STL中的一个重要的类模板,相当于一个更加健壮的,有很多附加能力的数组

使用vector前首先要包含头文件

  1. #include<vector> 

1.vector的常用操作:

  1. vector < int > vector_1(size) //创建一个数组vector_1,长度为size
  2. vector<int> vector_2(vector_1) //创建一个数组vector_2,并把vector_1中所有元素复制过去
  3. vector<int> vector_3(vector_1.begin(),vector_1.begin()+N)
  4. //创建一个数组vector_3,并把vector_1中前N个元素复制过去
  5. vector < int > vector_4(size,num) //创建一个数组vector_1,长度为size,初始化元素为num
  6. vector.resize(size); //重新设置数组大小为size
  7. vector.front() //返回数组首元素
  8. vector.back() //返回数组尾元素
  9. vector.begin() //获取数组头指针
  10. vector.end() //获取数组尾指针
  11. vector.size() //返回数组的长度
  12. vector[i] //访问数组的第i-1个元素
  13. vector.insert(vector.begin()+N,elem); //在数组的第N个元素后插入元素elem.
  14. vector.push_back(elem); //在数组的最后一个元素后插入一个元素elem.
  15. vector.erase(vector.begin()+M,vector.begin()+N);
  16. //删除数组的第M个到第N个元素
  17. vector.pop_back(); //删除数组的最后一个元素
  18. vector.clear(); //清空数组中的元素
  19. vector.empty(); //判断数组是否为空,若为空返回true,不为空返回false

例:

  1. /**********
  2. *Author:Pug_
  3. *Time:2019-3-1 22:00:45
  4. *Version:1.0
  5. *FUnction:Use of vector
  6. ***********/
  7. #include <iostream>
  8. #include <iomanip>
  9. #include <cstring>
  10. #include <cstdio>
  11. #include <cstdlib>
  12. //首先要包含头文件
  13. #include<vector>
  14. using namespace std;
  15. int main(){
  16. //vector是一个可存放任意类型数据的动态数组
  17. //数据类型除了int类型还可为其他的类型 ,size可为一个常量或变量
  18. //初始化后向量integer中默认值为0;
  19. int size = 10;
  20. vector < int > integers(size);
  21. //复制向量integer,复制为integers1
  22. vector<int> integers1(integers);
  23. //复制向量integer前5个元素,复制为integers2
  24. vector<int> integers2(integers.begin(),integers.begin()+5);
  25. //创建 integers3长度为size,默认值为1
  26. vector < int > integers3(size,1);
  27. integers.front();//获取首元素
  28. integers.back();//获取尾元素
  29. integers.begin();//获取头指针
  30. integers.end(); //获取尾指针
  31. //获取向量 integers的长度
  32. cout<<"integers的长度:"<<integers.size()<<endl;
  33. //通过下标读取元素
  34. for(int i = 0;i<integers.size();i++){
  35. cout<<setw(4)<<integers[i];
  36. }
  37. //通过下标输入元素
  38. for(int i = 0;i<integers.size();i++){
  39. cin>>integers[i];
  40. }
  41. //在 integers的第n个元素后插入元素123.
  42. int n = 1;
  43. integers.insert(integers.begin()+n,123);
  44. //在integers的最后一个元素后插入一个元素 123.
  45. integers.push_back(123);
  46. //删除integers的第m个到第n个元素 (第1个到第3个)
  47. int m = 1;
  48. n = 3;
  49. integers.erase(integers.begin()+m,integers.begin()+n);
  50. //删除integers的最后一个元素
  51. integers.pop_back();
  52. //清空 integers中的元素
  53. integers.clear();
  54. //返回integers是否为空,若为空返回1,不为空返回0
  55. integers.empty();
  56. return 0;
  57. }

2.使用vector 创建二维数组

  1. vector< vector<int> > matrix_vector(SIZE_ROW, vector<int> (SIZE_COL));
  2. //创建一个二维数组,行数为SIZE_ROW,列数为SIZE_COL.
  1. /**********
  2. *Author:Pug_
  3. *Time:2019-3-14 22:00:45
  4. *Version:1.0
  5. *FUnction:Use of 2 d vector
  6. ***********/
  7. #include <iostream>
  8. #include <iomanip>
  9. #include <cstring>
  10. #include <cstdio>
  11. #include <cstdlib>
  12. #include <vector>
  13. using namespace std;
  14. int main(){
  15. //创建一个3行3列数组
  16. vector< vector<int> > v2d(3, vector<int> (3));
  17. //赋值
  18. for(int i = 0;i<v2d.size();i++){
  19. for(int j = 0;j<v2d[0].size();j++){
  20. v2d[i][j] = i*v2d[0].size()+j;
  21. }
  22. }
  23. //输出
  24. for(int i = 0;i<v2d.size();i++){
  25. for(int j = 0;j<v2d[0].size();j++){
  26. cout<<setw(5)<<v2d[i][j];
  27. }
  28. cout<<endl;
  29. }
  30. cout<<endl<<endl;
  31. //将二维数组重新设置行列数
  32. //先重新设置行数再重新设置列数
  33. v2d.resize(8);
  34. for(int i = 0;i<v2d.size();i++){
  35. v2d[i].resize(8);
  36. }
  37. //赋值
  38. for(int i = 0;i<v2d.size();i++){
  39. for(int j = 0;j<v2d[0].size();j++){
  40. v2d[i][j] = i*v2d[0].size()+j;
  41. }
  42. }
  43. //输出
  44. for(int i = 0;i<v2d.size();i++){
  45. for(int j = 0;j<v2d[0].size();j++){
  46. cout<<setw(5)<<v2d[i][j];
  47. }
  48. cout<<endl;
  49. }
  50. return 0;
  51. }

C++标准库类模板vector的更多相关文章

  1. C++标准库类模板(stack)和 队列(queue)

    在C++标准库(STL)中有栈和队列的类模板,因此可以直接使用 1.栈(stack):使用栈之前,要先包含头文件 : #include<stack> stack.push(elem); / ...

  2. C++ 标准库类型-String,Vector and Bitset

    <C++ Primer 4th>读书摘要 最重要的标准库类型是 string 和 vector,它们分别定义了大小可变的字符串和集合.这些标准库类型是语言组成部分中更基本的那些数据类型(如 ...

  3. C++ Primer学习笔记2--c++标准库中的 vector、string 和 bitset 类型

    一.string    #include <string>  using std::string    初始化函数:    string s1;        默认构造函数 s1 为空串 ...

  4. 标准库类型之vector

    上篇中遗留了一个小作业,就是用string中的find_first_not_of和find_last_not_of函数来实现字符串左右空格的去除,先来完成它,实现的思路是先来编写去除左空格,然后再编写 ...

  5. 发布一个stl标准库容器类(vector/list)的安全删除方法

    话不多说,看代码. #include <functional> #ifndef ASSERT #include <cassert> #define ASSERT assert ...

  6. ZT 类模板Stack的实现 by vector

    *//*第3章 类模板 与函数相似,类也可以被一种或多种类型参数化.容器类就是一个具有这种特性的典型例子,它通常被用于管理某种特定类型的元素.只要使用类模板,你就可以实现容器类,而不需要确定容器中元素 ...

  7. 谈谈两种标准库类型---string和vector

    两种最重要的标准库---string和vector string和vector是两种最重要的标准库类型,string表示可变长的字符序列,vector存放的是某种给定类型对象的可变长序列. 一.标准库 ...

  8. C++primer第三章标准库类型

    除第二章介绍的基本数据类型外,C++ 还定义了一个内容丰富的抽象数据类型标准库. 本章将介绍标准库中的 vector.string 和 bitset 类型. string 类型支持长度可变的字符串 v ...

  9. Go标准库之html/template

    html/template包实现了数据驱动的模板,用于生成可防止代码注入的安全的HTML内容.它提供了和text/template包相同的接口,Go语言中输出HTML的场景都应使用html/templ ...

随机推荐

  1. python基础借鉴

    这是一个链接 这个是egon的链接 吴沛其的博客

  2. java/rabbitmp发布订阅示例(转)

    原文:http://www.cnblogs.com/tinmh/p/6134875.html 发布/订阅模式即生产者将消息发送给多个消费者. 下面介绍几个在发布/订阅模式中的关键概念-- 1. Exc ...

  3. jQuar总结10:jQuery操作元素的属性

    jQuery操作元素的属性 1 设置单个属性 //html <div></div> //js $('div').attr('id', 'box'); $('div').attr ...

  4. MongoDBAppender

    分三步: 1. client 2. appender 3. 配置文件 logback-test.xml <configuration> <appender name="MO ...

  5. 编写高质量代码改善C#程序的157个建议——建议155:随生产代码一起提交单元测试代码

    建议155:随生产代码一起提交单元测试代码 首先提出一个问题:我们害怕修改代码吗?是否曾经无数次面对乱糟糟的代码,下决心进行重构,然后在一个月后的某个周一,却收到来自测试版的报告:新的版本,没有之前的 ...

  6. JDK8新特性:使用stream、Comparator和Method Reference实现集合的优雅排序

    大家对java接口Comparator和Comparable都不陌生,JDK8里面Comparable还和以前一样,没有什么改动:但是Comparator在之前基础上增加了很多static和defau ...

  7. Inno Setup 通用脚本及简要说明( 一般情况够用了)

    ;以下脚本主要完成创建开始菜单和桌面的快捷方式,目录安装. #define MyAppName "我的软件名" #define MyAppVersion "1.0&quo ...

  8. 20145233《网络对抗》Exp7 DNS网络欺诈技术防范

    20145233<网络对抗>Exp7 DNS网络欺诈技术防范 实验问题思考 通常在什么场景下容易受到DNS spoof攻击 公共的无线局域网中,容易受到攻击者的攻击,因为这样就会连入局域网 ...

  9. djangorestframework接口文档自动生成

    参考: https://blog.csdn.net/ros_donggua/article/details/81007814 pip install coreapi

  10. [javascript]switchTab:仿腾讯首页Tab栏切换js插件

    腾讯首页的每个新闻栏目都是一个tab选项卡切换,属于延迟动作的:鼠标hover上去之后200毫秒才会切换,防止了因为浏览滑动导致的页面上选项卡的频繁切换.仿照这样的效果,自己写了一个js插件,实现了低 ...