C++ STL标准模板库之vector容器

C++的vector是动态数组,提供增删改查操作。常见成员函数包括下标访问、迭代器等。迭代器作为容器和算法之间的桥梁,允许读写元素,类似于指针。本文通过示例展示了如何使用迭代器进行操作。
摘要由CSDN通过智能技术生成

C++中vector是顺序容器的一种,可以说是可变长的动态数组。要使用vector时,需要包含头文件vector。

对于vector容器的操作大部分可分为增删改查。vector有很多成员函数。

常用成员函数如下:

vector()无参构造函数,将容器初始化为空
vector(int n)将容器初始化为有 n 个元素
void clear()删除所有元素
bool empty()判断容器是否为空        
void pop_back()删除容器末尾的元素        
void push_back( const T & val)将val添加到容器的末尾
int size()返回容器元素个数
iterator insert(iterator i, const T & val)将val插入迭代器i指向的位置,并返回i
iterator insert( iterator i, iterator first, iterator last)将其他容器上的区间 [first, last) 中的元素插入迭代器 i 指向的位置
iterator erase(iterator i)删除迭代器 i 指向的元素,返回值是被删元素后面的元素的迭代器
iterator erase(iterator first, iterator last)删除容器中的区间 [first, last)

 

#include <iostream>
#include<vector>

using namespace std;

int main()
{
	vector<int> vec;  
	vector<int> ::iterator it;
	for (int i = 0; i < 5; i++)
	{
		vec.push_back(i);    //将i添加到容器的末尾
	}
	for (int i = 0; i < 5; i++)
	{
		cout << vec[i] << endl;   //使用直接访问容器
	}
	vec.pop_back();   //删除末尾元素
	vec.push_back(10);  //添加元素到末尾
	cout << "分隔符**********************************************************" << endl;
	for (int i = 0; i < vec.size(); i++)
	{
		cout<<"下标遍历打印:" << vec[i] << endl; //再次输出容器里的元素
	}
	cout << "分隔符**********************************************************" << endl;
	vec.insert(vec.begin() + 1, 100);  //将100插入容器的第二个
	vec.erase(vec.begin() + 2); //将容器中第三个元素删除
	for (it = vec.begin(); it != vec.end(); ++it)   //用迭代器输出打印容器里的元素
	{
		cout<<"迭代器打印(增删之后):" << *it << endl;                       //再次打印容器里的元素
	}
}


控制台输出结果:

0
1
2
3
4
分隔符**********************************************************
下标遍历打印:0
下标遍历打印:1
下标遍历打印:2
下标遍历打印:3
下标遍历打印:10
分隔符**********************************************************
迭代器打印(增删之后):0
迭代器打印(增删之后):100
迭代器打印(增删之后):2
迭代器打印(增删之后):3
迭代器打印(增删之后):10

其中迭代器是一个变量,相当于容器和操纵容器的算法之间的中介。迭代器可以指向容器中的某个元素,通过迭代器就可以读写它指向的元素。从这一点上看,迭代器和指针类似。

通过迭代器可以读取它指向的元素,*迭代器名就表示迭代器指向的元素。通过非常量迭代器还能修改其指向的元素。代码中it就是正向迭代器定义方法如下:

容器类名::iterator  迭代器名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值