[微信公众号:Cpp入门到精通]有完整六十六节知识,STL知识总结,欢迎关注学习!!
上一节我们讲到STL的三大组件是容器,算法,迭代器。在C++中,容器、迭代器和算法之间有密切的关系。它们之间的关系可以这样描述:
迭代器提供了一种访问容器元素的途径,它是容器和算法之间的桥梁,算法通过迭代器访问容器元素,迭代器也为算法提供了一致的接口,使得相同的算法可以适用于不同类型的容器。容器内部包含了迭代器的实现,迭代器提供了对容器内部数据的指针式访问。
这节开始,我们将讲解各种容器,以及算法,迭代器。首先我们要讲的是vector容器。
vector是一种动态数组实现,它提供了动态大小的数组,支持随机访问和在末尾快速插入/删除元素。
1.包含头文件
在使用 vector 之前,需要包含头文件:
#include <vector>
2.容器创建和初始化
#include <vector>
using namespace std;
int main() {
// 初始化一个空的 vector
vector<int> v1;
// 使用初始化列表进行初始化
vector<int> v2 = { 1, 2, 3, 4, 5 };
// 初始化指定大小的 vector,所有元素为默认值(0)
vector<int> v3(5);
// 初始化指定大小的 vector,所有元素为给定值(例如,初始化为 10)
vector<int> v4(5, 10);
// 复制构造函数,把v2的元素赋值给v5
vector<int> v5(v2);
return 0;
}
如果想要看结果,我们可以用遍历算法将结果打印出来。
#include<iostream>//输入输出记得包含头文件
using namespace std;
#include <vector>
void print(vector<int>& v)
{
for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
{
cout << (*it) << " ";
}
cout << endl;
}
int main() {
vector<int> v1;
print(v1);
vector<int> v2 = { 1, 2, 3, 4, 5 };
print(v2);
vector<int> v3(5);
print(v3);
vector<int> v4(5, 10);
print(v4);
vector<int> v5(v2);
print(v5);
return 0;
}
print函数是用来打印 vector<int> 中的元素的,这是一个基本的遍历并输出元素的函数。vector<int>::iterator是典型的使用迭代器来遍历 vector<int> 的方法。这个迭代器 it 从 v.begin() 开始,直到 it != v.end() 为止,每次迭代通过 it++ 进行递增。这是使用迭代器的基本写法,它允许你直接操作迭代器来访问容器中的元素。迭代器返回的是指向容器中某个元素的指针或引用。所以我们在输出的时候要使用解引用*it。
结果如下:
1 2 3 4 5
0 0 0 0 0
10 10 10 10 10
1 2 3 4 5
3.插入元素
有多种方法可以向vector容器中插入元素。我们以上面的容器v2为例。
1.使用尾插法push_back(),在末尾插入元素:
vector<int> v2 = { 1, 2, 3, 4, 5 };
print(v2);
v2.push_back(10);
print(v2);
结果如下:
1 2 3 4 5
1 2 3 4 5 10
2.使用insert(),在指定位置插入一个或多个元素。
vector<int> v2 = { 1, 2, 3, 4, 5 };
print(v2);
//在第0个位置插入20,第一个参数是迭代器
v2.insert(v2.begin(), 20);
print(v2);
//在修改后的容器的第3个位置后插入30
v2.insert(v2.begin()+3, 30);
print(v2);
//在修改后的容器的第1个位置后插入3个40
v2.insert(v2.begin() + 1, 3, 40);
print(v2);
结果如下:
1 2 3 4 5
20 1 2 3 4 5
20 1 2 30 3 4 5
20 40 40 40 1 2 30 3 4 5
4.删除元素
1.使用尾删法pop_back(),删除容器末尾的元素。
vector<int> v2 = { 1, 2, 3, 4, 5 };
print(v2);
v2.pop_back();
print(v2);
结果如下:
1 2 3 4 5
1 2 3 4
2.使用erase(),在指定位置删除一个或多个元素。
vector<int> v2 = { 1, 2, 3, 4, 5 };
print(v2);
//删除第一个元素
v2.erase(v2.begin());
print(v2);
//删除第二个位置开始的两个元素
v2.erase(v2.begin() + 1, v2.begin() + 3);
print(v2);
结果如下:
1 2 3 4 5
2 3 4 5
2 5
3.使用clear(),清空容器。
v2.clear();
print(v2);
下节我们继续讲关于vector容器的其他操作,感谢观看!欢迎各位的点赞与关注!您的点赞和关注是我学习更新的动力!