push_back()
顾名思义,push_back(x)
就是在vector
后面添加一个元素x,时间复杂度为0(1)。
示例如下:
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
vector<int> vi;
for(int i=1; i<=3; i++)
{
vi.push_back(i); //将1,2,3依次插入vi末尾
}
for(int i=0; i < vi.size(); i++) // size()函数给出vi中元素的个数
{
printf("%d",vi[i]);
}
return 0;
}
输出结果123
pop_back()
有添加就有删除,pop_back()
用于删除vector的尾元素,时间复杂度为O(1)。
示例如下:
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
vector<int> vi;
for(int i=1; i<=3; i++)
{
vi.push_back(i); //将1,2,3 依次插入vi的末尾
}
vi.pop_back()
for(int i=0; i < vi.size(); i++)
{
printf("%d",vi[i]);
}
return 0;
}
输出结果1 2
size()
size()
用来获取vector中元素的个数,时间复杂度为O(1)。size()
返回的是unsigned
l类型,不过一般来说用%d不会出现很大的问题,这一点对所有STL容器都是一样的。
示例如下:
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
vector<int> vi;
for(int i=1; i<=3; i++)
{
vi.push_back(i); //将1,2,3依次插入vi末尾
}
printf("%d\n", vi.size() );
return 0;
}
输出结果:3
clear()
dclear()
用来清空vector中所有元素,时间复杂度为O(N),其中N为vector中元素的个数。
示例如下:
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
vector<int> vi;
for(int i=1; i<=3; i++)
{
vi.push_back(i); //将1,2,3依次插入vi末尾
}
vi.clear();
printf("%d\n",vi.size());
return 0;
}
输出结果:0
insert()
insert(it,x)
用来向vector的任意迭代器it处插入一个元素X,时间复杂度为O(N)。
示例如下:
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
vector<int> vi;
for(int i=1; i<=5; i++)
{
vi.push_back(i); //此时为 1 2 3 4 5
}
vi.insert(vi.begin() + 2, -1);
for(int i=0; i< vi.size(); i++)
{
printf("%d", vi[i]); //1 2-1 3 4 5
}
return 0;
}
输出结果:1 2 -1 3 4 5
erase()
有两种用法:删除单个元素,删除一个区间的所有元素。时间复杂度均为O(N).
①删除单个元素。
serase(it)
即删除迭代器为it处的元素。
示例如下:
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
vector<int> vi;
for(int i=5; i<=9; i++)
{
vi.push_back(i); //插入 5 6 7 8 9
}
vi.erase(vi.begin() + 3);
for(int i=0; i< vi.size(); i++)
{
printf ("%d", vi[i]);
}
return 0;
}
输出结果: 5679
②删除一个区间内的所有元素。
erase(frist, last)
即删除[frist, last) 内的所有元素。
begin()函数的作用为取vi的首元素地址。end() 函数取的是尾元素地址的下一个地址。(左闭右开)
示例如下:
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
vector<int> vi;
for(int i=5; i<=9; i++)
{
vi.push_back(i); //插入 5 6 7 8 9
}
vi.erase(vi.begin() + 1, vi.begin() + 4); //删除 vi[1] vi[2] vi[3]
for(int i=0; i< vi.size(); i++)
{
printf ("%d", vi[i]);
}
return 0;
}
输出结果:5 9