文章目录
- 【 1. vector 的声明与初始化 】
- 1.1 vector 的声明
- 1.2 vector 的初始化
- 1.2.1 构造一个空的 vector
- 1.2.2 指定数量初值的方式初始化 vector
- 1.2.3 迭代器的方式初始化
- 1.2.4 构造一个相同的 vector
- 【 2. vector 的相关操作 】
- 2.1 插入元素
- 2.1.1 在vector的末尾插入新元素
- 2.1.2 在迭代器的前面插入新元素
- 2.1.3 覆盖原有的 vector
- 2.2 删除元素
- vector数组是可以 存放任意数据类型 的 动态数组。
和普通数组类似,可以通过下标对数组中的元素进行引用。 - 使用vector数组要在 头文件中加
#include <vector>
- vectors 包含着一系列连续存储的元素,其行为和数组类似。访问 vector 中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在vector中插入元素则是线性时间复杂度。
【 1. vector 的声明与初始化 】
1.1 vector 的声明
- 声明
vector<int> vec;//声明一个存放int型的向量vec
1.2 vector 的初始化
1.2.1 构造一个空的 vector
- 基本语法
构造一个空的vector。
vector<int> myvector();
//或者
vector<int> myvector;
- 举例1
构造一个空的 vector myvector。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> myvector();
return 0;
}
1.2.2 指定数量初值的方式初始化 vector
- 基本语法
构造一个初始放入num个值为val的元素的vector。
vector( size_type num, const TYPE &val );
- 举例1
构造一个 5 个 3 的 vector。这里 myvec.size() 返回 myvec 元素数量大小。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> myvec(5, 3);
for (int j=0;j<myvec.size();++j)
cout << myvec[j]<<endl;
return 0;
}
1.2.3 迭代器的方式初始化
- 基本语法
构造一个初始值为 [start,end) 区间元素的vector。
vector( input_iterator start, input_iterator end );
- 举例1
将 myvec 初始化为 [地址a,地址a+3)的元素 。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int a[5] = { 1, 2, 3, 4, 5 };
vector <int>myvec( a,a+3 );
for (int j=0;j<myvec.size();++j)
cout << myvec[j]<<endl;
return 0;
}
- 举例2
将 myvec 初始化为 [地址&a[1],地址&a[4])的元素 。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int a[5] = { 1, 2, 3, 4, 5 };
vector<int> myvec(&a[1], &a[4]);
for (int j=0;j<myvec.size();++j)
cout << myvec[j]<<endl;
return 0;
}
1.2.4 构造一个相同的 vector
- 基本语法
构造一个与 AnthorVector 相同的vector 。
vector( const vector &AnthorVector);
- 举例1
构造一个与 myvec 相同的 myvec2 。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int a[5] = { 1, 2, 3, 4, 5 };
vector<int> myvec(&a[1], &a[4]);
vector <int>myvec2(myvec);
for (int j=0;j<myvec.size();++j)
cout << myvec2[j]<<endl;
return 0;
}
【 2. vector 的相关操作 】
下面给出几个常用的操作及案例。
2.1 插入元素
2.1.1 在vector的末尾插入新元素
- 基本语法
在 myvec 的末尾添加元素newvalue。
myvec.push_back(newvalue);
- 举例1
在 myvec 的末尾添加元素1。
#include<vector>
using namespace std;
int main()
{
vector<int> myvec(5, 3);
myvec.push_back(1);
for (int j = 0; j <myvec.size(); ++j)
cout << myvec[j] << endl;
return 0;
}
2.1.2 在迭代器的前面插入新元素
- 基本语法
在 myvec 的前面添加元素newvalue。
vector<int>::iterator it;
it=vec.begin();
vec.insert(it,newvalue);
- 举例1
在 myvec 的前面添加元素1。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> myvec(5, 3);
vector<int>::iterator it;
it = myvec.begin();
myvec.insert(it, 1);
for (int j = 0; j <myvec.size(); ++j)
cout << myvec[j] << endl;
return 0;
}
2.1.3 覆盖原有的 vector
- 基本语法
在vector中加入NewNum个NewValue元素,同时清除掉以前的元素。
vec.assign(NewNum,NewValue);//现在vec中只有NewNum个NewValue
- 举例1
现在vector中只有2个1。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> myvec(5, 3);
myvec.assign(2, 1);//现在vector中只有2个1
for (int j = 0; j <myvec.size(); ++j)
cout << myvec[j] << endl;
return 0;
}
2.2 删除元素
- 基本语法
//删除最后一个元素
vec.pop_back();
//删除指定位置的元素
vec.erase(vec.begin());//删除第一个位置的元素值
//清除所有元素
vec,clear();
- 举例1
删除 myvec 的最后一个元素
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> myvec(5, 3);
myvec.pop_back();
for (int j = 0; j <myvec.size(); ++j)
cout << myvec[j] << endl;
return 0;
}