目录
介绍
常用函数
函数实例
1、初始化vector
2、遍历
3、修改元素的值
4、删除元素
5、排序
介绍
向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。
在 vector 容器中,根据下标随机访问某个元素的时间是常数,在尾部添加一个元素的时间大多数情况下也是常数,总体来说速度很快。
在中间插入或删除元素时,因为要移动多个元素,因此速度较慢,平均花费的时间和容器中的元素个数成正比。
常用函数
成员函数
作 用
vector()
无参构造函数,将容器初始化为空
vector(int n)
将容器初始化为有 n 个元素
vector(int n, const T & val)
假定元素的类型是 T,此构造函数将容器初始化为有 n 个元素,每 个元素的值都是 val
vector(iterator first, iterator last)
first 和 last 可以是其他容器的迭代器。一般来说,本构造函数初始化的结果就是将 vector 容器的内容变成与其他容器上的区间 [first, last) —致
void assign(int n,const T& x)
设置向量中第n个元素的值为x
void clear()
删除所有元素
bool empty()
判断容器是否为空
void pop_back()
删除容器末尾的元素
void push_back( const T & val)
将 val 添加到容器末尾
int size()
返回容器中元素的个数
Int capacity()
当前vector分配的大小
reference at(int pos)
返回pos位置元素的引用
T & front()
返回容器中第一个元素的引用
T & back()
返回容器中最后一个元素的引用
iterator begin()
返回向量头指针,指向第一个元素
iterator end()
返回向量尾指针,指向向量最后一个元素的下一个位置
reverse_iterator rbegin()
反向迭代器,指向最后一个元素
reverse_iterator rend()
反向迭代器,指向第一个元素之前的位置
iterator insert(iterator i, const T & val)
将 val 插入迭代器 i 指向的位置,返回 i
iterator insert( iterator i, iterator first, iterator last)
将其他容器上的区间 [first, last) 中的元素插入迭代器 i 指向的位置
iterator erase(iterator i)
删除迭代器 i 指向的元素,返回值是被删元素后面的元素的迭代器
iterator erase(iterator first, iterator last)
删除容器中的区间 [first, last)
void swap( vector <T> & v)
将容器自身的内容和另一个同类型的容器 v 互换
函数实例
1、初始化vector
(1) vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。
(2)vector<int> a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1
(3)vector<int> a(b); //用b向量来创建a向量,整体复制性赋值
(4)vector<int> a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素
(5)int b[7]={1,2,3,4,5,9,8};
vector<int> a(b,b+7); //从数组中获得初值
2、遍历
#include <string>
#include <cctype>
using namespace std;
int main() {
vector<int> myVector(10, 22);
//通过下角标遍历。
for (auto i = 0; i < myVector.size(); i++)
{
cout << " " << myVector[i];
}
cout << "\n";
myVector.push_back(44);
//通过迭代器遍历
for (auto i = myVector.begin(); i != myVector.end(); i++)
{
cout << " " << *i;
}
cout << "\n";
return 0;
}
3、修改元素的值
// list::sort
#include <iostream>
#include <vector>
#include <string>
#include <cctype>
using namespace std;
int main() {
vector<int> myVector(10, 22);
//通过下角标遍历。
for (auto i = 0; i < myVector.size(); i++)
{
myVector[i]=55;
}
cout << "\n";
//通过下角标遍历。
for (auto i = 0; i < myVector.size(); i++)
{
cout << " " << myVector[i];
}
cout << "\n";
myVector.push_back(44);
//通过迭代器遍历修改元素的值。
for (auto i = myVector.begin(); i != myVector.end(); i++)
{
if (*i == 55)
{
*i = 33;
}
}
cout << "\n";
for (auto i = myVector.begin(); i != myVector.end(); i++)
{
cout << " " << *i;
}
return 0;
}
4、删除元素
#include <iostream>
#include <vector>
#include <string>
#include <cctype>
using namespace std;
int main() {
vector<int> myVector = {1,2,3,4,5,6,7,8,9,11};
//通过下角标删除。
for (auto i = 0; i < myVector.size(); i++)
{
if (i == 4)
{
myVector.erase(myVector.begin()+4);
}
}
cout << "\n";
//通过迭代器遍历删除。
for (auto i = myVector.begin(); i != myVector.end();)
{
if (*i == 7)
{
i=myVector.erase(i);
}
else
{
i++;
}
}
cout << "\n";
for (auto i = myVector.begin(); i != myVector.end();i++)
{
cout << " " << *i;
}
cout << "\n";
return 0;
}
5、排序
// list::sort
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compar(int a, int b)
{
return a > b;
}
int main() {
vector<int> myVector = { 1,2,4,3,5,6,7,8,9,11 };
sort(myVector.begin(), myVector.end());
for (auto i = myVector.begin(); i != myVector.end(); i++)
{
cout << " " << *i;
}
cout << "\n";
sort(myVector.begin(), myVector.end(),compar);
for (auto i = myVector.begin(); i != myVector.end(); i++)
{
cout << " " << *i;
}
cout << "\n";
return 0;
}