向量 vector 是一种对象实体, 能够容纳许多其他类型相同的元素, 因此又被称为容器。 与string相同, vector 同属于STL(Standard Template Library, 标准模板库)中的一种自定义的数据类型, 可以广义上认为是数组的增强版

基础用法在代码注释中说明

//test.cpp
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> v;
vector<int> v1(10);//为向量v1赋值10个0
vector<int> v3(10, 100);//为向量v3赋值10个100
for(int i=1; i<8; ++i)
{
v.push_back(i);
v1.push_back(i);
}
vector<int>::iterator it = v.begin();//迭代器,指向向量头部
cout<<"v = ";
while(it!=v.end())
{
cout<<*it<<" ";
++it;
}
cout<<endl; vector<int>::reverse_iterator rv_it = v1.rbegin();//反向迭代器,指向向量尾部,且自加时是向向量头部移动:
cout<<"rv_v1 = ";
while(rv_it != v1.rend())
{
cout<<*rv_it<<" ";
++rv_it;
}
cout<<endl; v3.insert(v3.begin()+3, 7);//在v3第三个元素前插入7
v3.insert(v3.begin()+1, 2, 8);//在v3第二个元素前插入2个8
vector<int>::iterator first = v.begin()+3;
vector<int>::iterator end = v.end();
v3.insert(v3.end(), first, end);//在v3.end()后将区间[v1.begin()+3, v1.end())元素全部插入:
vector<int>::iterator it3 = v3.begin();
v3.erase(v3.begin()+1);//删除v3第二个元素
cout<<"v3 = ";
while(it3 != v3.end())
{
cout<<*it3<<" ";
++it3;
}
v1.assign(first, end);//将v1清空后为v1赋值,将[first, end)区间里包含的元素赋值给v1
v1.assign(7, 7);//将v1清空后为v1赋值7个7
cout<<endl;
cout<<v.at(4)<<endl;
cout<<v[4]<<endl;
cout<<"v.size() = "<<v.size()<<endl;//v的大小(里边有几个元素)
cout<<"v.capacity() = "<<v.capacity()<<endl;//v的容量
v.resize(20);//指定向量的大小为20
cout<<"v.capacity() = "<<v.capacity()<<endl;
return 0;
}

Vector的两个重要特点

1.vector可以为单向的为增加的元素自动开辟空间,其开辟特点为以2的倍数增长,比如,新构建一个向量V1,为其尾插一个元素,打印其大小和容量为

现在增加4个元素,则容量将变为8

2.由第一个问题引出第二个问题,在使用迭代器时一定要注意向量在增长过程中是否自动扩容了,若果自动扩容,则原来的迭代器都会失效,要重新定义

自动扩容过程是:开辟一个二倍于原来向量的空间,再将原先的元素复制过来

原来的迭代器还指着原来的空间,但是向量的空间已经改变,所以原来的迭代器失效。

以上两条适用于自动扩容过程

最新文章

  1. 一步一步教你用CSS画爱心
  2. eclipse新建web项目开发JSP
  3. Lab_7_Automating_v2.5
  4. 引入CSS文件的@import与link的权重分析
  5. 开发https应用
  6. squid安装、配置、控制
  7. 支持向量机(SVM)简介
  8. shell获取目录下最新的文件,文件是以日期命名
  9. Chp18: Hard
  10. 存储占用:Memory Map 汉化去广告版
  11. PHP 6:PHP 基本数据类型
  12. Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(七)Ability的信息传递等
  13. dummy_backend_queue.go
  14. TP-Shop安装步骤教程(Windows版)
  15. 解决idea导入项目后依赖报错问题
  16. 2018-2019-2 20175205实验一《Java开发环境的熟悉》实验报告
  17. js jquery select 操作 获取值,选中选项,增加,修改,删除
  18. Docker镜像Push到DockerHub
  19. android 利用CountDownTimer实现时分秒倒计时效果
  20. JDK8 - Function介绍

热门文章

  1. 将Linux中文语言修改成英文的具体操作方法及报错解决
  2. 跟着老猫来搞GO-容器(1)
  3. CPU被挖矿,Redis竟是内鬼!
  4. liunx基础知识点2:文件操作命令、系统资源查询、权限赋予命令、安装命令、解压命令
  5. C++内存管理剖析
  6. [cf461E]Appleman and a Game
  7. [hiho1952]运算数
  8. 语音合成论文翻译:2019_MelGAN: Generative Adversarial Networks for Conditional Waveform Synthesis
  9. mybatis新增账号并且返回主键id
  10. 百胜中国使用Rainbond实现云原生落地的实践