文章目录
Q3:vector包含哪些成员函数?
成员函数 | 函数功能 |
---|---|
begin() | 返回指向容器中第一个元素的迭代器 |
end() | 返回指向容器最后一个元素所在位置后一个位置的迭代器,通常和 begin() 结合使用 |
size() | 返回实际元素个数 |
resize() | 改变实际元素的个数 |
empty() | 判断容器中是否有元素,若无元素,则返回 true;反之,返回 false |
insert() | 在指定的位置插入一个或多个元素 |
erase() | 移出一个元素或一段元素 |
clear() | 移出所有的元素,容器大小变为 0 |
swap() | 交换两个容器的所有元素 |
push_back() | 在序列的尾部添加一个元素 |
pop_back() | 移出序列尾部的元素 |
注:vector容器包含很多成员函数,这里只列举部分
1.push_back()和pop_back函数
vector v1={
1,2,3,4,5};
v1.push_back(6);//在末尾添加6
for (int i = 0; i < v1.size(); ++i) {
cout<<v1.at(i)<<' ';
}
**结果:1 2 3 4 5 6
vector v1={
1,2,3,4,5};
v1.pop_back();//不需要参数
for (int i = 0; i < v1.size(); ++i) {
cout<<v1.at(i)<<' ';
}
**结果·:1 2 3 4
2.swap()交换函数
利用swap函数可以实现两个vector容器内容交换,看实例:
int a[5]={
1,2,3,4,5};
vector<int> v1,v2;
v1.assign(a,a+5); //初始化v1={1,2,3,4,5}
v2.assign(3,6); //初始化v2={6,6,6}
v1.swap(v2); //swap()实现vector容器交换
//以下为输出容器元素,检测结果
for (int i = 0; i < v1.size(); ++i) {
cout<<v1[i]<<' ';
}
cout<<endl;
for (int i = 0; i < v2.size(); ++i) {
cout<<v2[i]<<' ';
}
cout<<endl;
**结果:6 6 6
1 2 3 4 5
//实现了交换
3.insert()插入函数
- 最简单的指定位置插入数据便是
v.insert(pos,x);
这里的位置pos用指针来确定,x为要插入的数据,还有其他一些插入形式,看实例:
vector<int> v1, v2;
v1 = {
1, 2, 3, 4, 5};
//指定位置插入元素
v1.insert(v1.begin() + 2, 100);//第一个元素为指针
for (int i = 0; i < v1.size(); ++i) {
cout << v1.at(i) << ' ';
}
cout << endl;
//**结果:1 2 100 3 4 5 //指针指向的位置变成指定数据,后面的元素依次后移
//指定位置插入多个元素
v1.insert(v1.begin(), 3, 99);
for (int i = 0; i < v1.size(); ++i) {
cout << v1.at(i) << ' ';
}
cout << endl;
//**结果:99 99 99 1 2 100 3 4 5
//指定位置插入区间数据
v2 = {
1, 2, 3, 4, 5};
int b[5] = {
10, 20, 30, 40, 50};
v2.insert(v2.begin() + 1, b + 1, b + 3);
for (int i = 0; i < v2.size(); ++i) {
cout << v2.at(i) << ' ';
}
cout << endl;
//**结果:1 20 30 2 3 4 5
4.empty()判空函数
vector<int> v1, v2;
v1 = {
1, 2, 3, 4, 5};
cout << "v1=" << v1.empty() << endl;
cout << "v2=" << v2.empty() << endl;
**结果:v1=0//代表空
v2=1
5.resize()改变容器长度函数
- 减小长度,若减少的位置存在元素,元素会被删除
vector<int> v1; //如果长度缩小,会将后面的元素删除
v1 = {
1, 2, 3, 4, 5};
v1.resize(3);
for (int i = 0; i < v1.size(); ++i) {
cout << v1[i] << ' ';
**结果:1 2 3 //原本是5个元素,当长度减小为3,原本后面的元素就被删除了
}
- 增加长度
vector<int> v1, v2;
int a[5] = {
1, 2, 3, 4, 5};
v2.assign(a, a + 5);
v2.resize(8); //传入的参数要大于原来的容器长度
for (int i = 0; i < v2.size(); ++i) {
cout << v2[i] << ' ';
}
cout << endl;
//结果:1 2 3 4 5 0 0 0 //增加的位置会自动补0
还可以指定扩展区域的值
vector<int> v1, v2;
int a[5] = {
1, 2, 3, 4, 5};
v2.assign(a, a + 5);
v2.resize(8,10); //第一个参数为要扩展的长度,第二个参数为指定数值
for (int i = 0; i < v2.size(); ++i) {
cout << v2[i] << ' ';
}
cout << endl;
**结果:1 2 3 4 5 10 10 10
6.erase()删除函数
vector<int> v1, v2;
v1 = {
1, 2, 3, 4, 5};
v1.erase(v1.begin() + 2);//注意传入的是指向要删除数据的指针!
for (int i = 0; i < v1.size(); ++i) {
cout << v1.at(i) << ' ';
}
cout << endl;
//**结果:1 2 4 5
7.clear()清除函数
vector<int> v1, v2;
v1 = {
1, 2, 3, 4, 5};
v1.clear();
cout << v1.empty();
cout << endl;
//结果:1 代表容器v1为空