C++高级学习:第四节-Vector容器(上)

  [微信公众号: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容器的其他操作,感谢观看!欢迎各位的点赞与关注!您的点赞和关注是我学习更新的动力!

  • 20
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值