STL - vector

一、vector主要特征

  • vector实际上就是对动态数组封装;
  • 可以像数组一样可以使用下标访问元素,若vector长度为n, 则其下标为 0~n-1
  • 根据下标访问元素效率高;
  • vector对象的空间随着插入删除操作自动调整;
  • 空间自动调整比较耗费时间,因此频繁插入删除的情况下,vector效率稍差;

二、vector创建对象

创建一个空向量
vector v1; // int 类型向量 
vector s1; // string 类型向量

从已有向量复制创建向量
vector v2( v1 ); // 拷贝v1内容到v2(拷贝构造函数)

创建10个元素的向量 
vector s2( 10 );

创建10个元素的向量,所有元素都是 1.5 
vector v3( 10, 1.5 );

创建向量指针
vector *pvec = new vector( 10, -5 );

三、vector操作

  • 添加和删除元素
vector 尾部添加元素
vector v1; v1.push_back(1);

vector 任意位置插入元素
v1.insert(v1.begin(),0);  // 头部插入
v1.insert(v1.end(), 4); //尾部插入 
v1.insert(v1.end()-1,3); //倒数第二位置
//v1.begin(), v1.end() 获取相应位置的迭代器

vector 删除最后一个元素
v1.pop_back();  // 删除最后一个元素

vector 删除任意位置元素
v1.erase(v1.begin());  // 删除第一个元素
v1.erase(v1.begin(), v1.end());  // 删除全部元素
  • vector向量大小相关的函数
v.size() 返回向量的大小
v.empty() 返回向量是否为空
  • vector向量上面的迭代器
1、向量上的迭代器定义、使用: 
   vector::iterator it;  *it = 5;

2、每种容器都定义了一对begin和end的函数,用于返回迭代器。
如果容器中有元素,由begin返回的迭代器指向第一个元素:

it = v1.begin(); // 指向v1[0]

3、由end返回的迭代器指向vector的末端元素的下一个。
通常称为超出末端迭代器,表明它指向了一个不存在的元素

it = v1.end(); // 指向末端元素的下一个

如果vector为空,begin返回的迭代器与end返回的迭代器相同
  • vector常用的算法
void sort( first, last)
first和last这两个参数都是容器的迭代器,它们给出了容器中的查找区间起点和终点;

********  example ***********

sort(v.begin(),v.end());
vector::iterator it;
for(it=v.begin(); it!=v.end();it++)
cout<< *it <<" ";

find( first, last, val)
1、first 和 last 这两个参数都是容器的迭代器,它们给出了容器中的查找区间起点和终点;
2、这个区间是个左闭右开的区间[first,last);
3、val参数是要查找的元素的值;
4、函数返回值是一个迭代器。如果找到,则该迭代器指向被找到的元素。如果找不到,则该迭代器指向查找区间终点;

********  example ***********

vector v(5,3); vector::iterator p;
p = find(v.begin(),v.end(),3);
if( p!=v.end()) cout<<*p<< endl;
p = find(v.begin(),v.end(),5);
if( p==v.end()) cout<<"not found\n"; 


replace( first, last, old, new ) // first, last为迭代器 作用:将 [ first,last ) 范围内的所有值为old的替换为new
reverse(start, end) // start, end为迭代器 作用:将序列中 [start, end) 范围反转排列顺序
count(start, end, searchValue) // start, end为迭代器 作用:统计[start, end) 范围内等于searchValue的元素个数
accumulate(first, last, init) // first, last为迭代器 作用:将[ first,last )范围内的所有值相加,再加上init后返回

三、常见序列容器

STL - vector_第1张图片
屏幕快照 2018-10-02 下午4.14.03.png
STL - vector_第2张图片
屏幕快照 2018-10-02 下午4.14.18.png
STL - vector_第3张图片
屏幕快照 2018-10-02 下午4.14.31.png

你可能感兴趣的:(STL - vector)