欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

1.vector相量容器

程序员文章站 2022-03-21 20:41:44
...

vector相量容器

vector(向量):是一种顺序容器,事实上和数组差不多,但它比数组更优越。一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界。而vector正好弥补了这个缺陷,它的特征是相当于可分配拓展的数组,它的随机访问快,在中间插入和删除慢,但在末端插入和删除快。

#include<vector> 
using namespace std;

vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率

 

 

常用类函数成员:

clear()            //移除容器中所有数据。
 
erase(beg,end)     //删除[beg,end)区间的数据,返回值为删除区域后的第一个元素地址;
erase(pos)         // 删除该实参指针所对应的元素,返回值为删除区域后的第一个元素地址;

front()            //传回第一个数据。
 
insert(pos,elem)   //在pos位置插入一个elem拷贝
 
pop_back()         //删除最后一个数据。
 
push_back(elem)    //在尾部加入一个数据。
 
resize(num)        //重新设置该容器的大小
 
size()             //回容器中实际数据的个数。
 
begin()            //返回指向容器第一个元素的迭代器
 
end()              //返回指向容器最后一个元素的迭代器
 
at(pos)            //返回容器中第 pos 个元素的值

 

一维vector

  • 初始化问题
vector<int> numbers;//定义一个一维序列 
//默认初始化,vector为空,size为0,未开辟空间,可通过push_back()添加元素 

vector<int> numbers(5); 
//默认初始化,指定vector(初始)大小为5个int空间,元素初始值默认为0 

vector<int> numbers(5,2); 
//初始化numbers的长度为5,所有元素的值为2; 

vector<int> numbers={1,2,3,4,5}; 
//初始化时直接指定具体元素
  • 以拷贝的形式初始化
vector<int> numbers1={1,2,3,4,5};
vector<int> numbers2=numbers1;
//以拷贝的形式初始化,初始化后numbers2将于numbers1完全一样
vector<int> numbers2(numbers1);
//这两种初始化方式是完全等价的,都是拷贝形式的初始化
vector<int> numbers2(numbers1.begin(),numbers1.end());
//拷贝两个迭代器范围内的元素来进行初始化(并不要求迭代器一定是vector的,其他容器的也可以);
  • 数据类型不匹配问题:在初始化过程中如果出现数据类型不匹配的问题,如果“类型相容”(满足类型转换条件),就进行数据类型转换,否则......;
vector<int> numbers={1,2.0,3.0,4,5};
//在初始化过程中,2.0和3.0会被强制转化为整数;

 

二维vector

vector<vector<int>> numbers(10);//定义一个二维序列

事实上这个这个二维序列容器的意思是:定义了一个vector序列,而这个序列中的每一个元素都是“vector<int>”数据类型,而后面括号里的10的含义是先来10个这样的元素;

这样如果想在增加一行的话,可以:

vector<int> news;
numbers.push_back(news);