C++ STL::Vector

文章介绍了STL中的vector容器,它是一个动态数组,能自动调整大小。vector使用连续内存存储元素,提供常数时间的尾部插入和删除,以及随机访问。文中列举了如push_back、pop_back、size、empty等常用成员函数,并详细阐述了如何通过下标和迭代器访问元素,还包括使用sort进行排序及智能指针的遍历方式。
摘要由CSDN通过智能技术生成

1 介绍
1.1 STL中的vector是一种动态数组容器,它可以随着元素数量的变化自动调整大小,同时提供了许多便利的成员函数来操作其中的元素。
1.2 vector使用连续的内存块来存储元素,因此在访问和处理元素时性能较好。它还支持常数时间的尾部插入和删除操作,并且可以随机访问任何位置的元素。

2 以下是vector常用的成员函数:

push_back():在vector的尾部插入一个元素。
pop_back():从vector的尾部删除一个元素。
size():返回vector中元素的数量。
empty():检查vector是否为空。
begin():返回指向vector的第一个元素的迭代器。
end():返回指向vector的最后一个元素的下一个迭代器。
front():返回vector的第一个元素的引用。
back():返回vector的最后一个元素的引用。
clear():删除vector中的所有元素。
erase():删除指定位置或范围内的元素。
insert():在指定位置插入一个或多个元素。

3 注意点
3.1. 排序
使用sort排序要: sort(c.begin(),c.end());

对所有元素进行排序,如果要对指定区间进行排序,可以对sort()里面的参数进行加减改动。

3.2. 访问
数组访问:

上面有简单的访问演示,下面进行扩充并复习

下标法: 和普通数组一样

注意:一维数组的下标是从0 00到v . s i z e ( ) − 1 v.size()-1v.size()−1,访问之外的数可能会出错

迭代器法: 类似指针一样的访问 ,首先需要声明迭代器变量,和声明指针变量一样,可以根据代码进行理解(附有注释)。

代码如下:

vector vi; //定义一个vi数组
vector::iterator it = vi.begin();//声明一个迭代器指向vi的初始位置
1
2
vector数组访问相关代码:

2.1.下标访问:

//添加元素
for(int i = 0; i < 5; i++)
vi.push_back(i);

//下标访问
for(int i = 0; i < 5; i++)
cout << vi[i] << " ";
cout << “\n”;
1
2
3
4
5
6
7
8
2.2.迭代器访问:

//迭代器访问
vector::iterator it;
//相当于声明了一个迭代器类型的变量it
//通俗来说就是声明了一个指针变量

//方式一:
vector::iterator it = vi.begin();
for(int i = 0; i < 5; i++)
cout << *(it + i) << " ";
cout << “\n”;

//方式二:
vector::iterator it;
for(it = vi.begin(); it != vi.end();it ++)
cout << *it << " ";
//vi.end()指向尾元素地址的下一个地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2.3.智能指针:

只能遍历完数组,如果要指定的内容进行遍历,需要另选方法。
auto 能够自动识别类型。

vector v;
v.push_back(12);
v.push_back(241);
for( auto i : v)
cout << i << " "; // 12 241
1
2
3
4
5
综上:

vi[i] 和 (vi.begin() + i) 等价
说明:只有vector和string的stl容器支持
(it + i)的元素访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值