vevtor容器详细简单使用,迭代器iterator对其简单指向

本文详细介绍了C++中的vector容器,包括其动态扩展特性、创建方式、初始化、常用函数如size(),clear(),push_back()等,以及迭代器的使用和for循环遍历的示例。
摘要由CSDN通过智能技术生成

前言:

vector形象来说就是一个动态数组,不用指定容量大小,它会随着你往里面添加东西自动扩增,总是会有预留空间,即容器里面不是满的

当你存两个元素进去时,容量会扩增到4或者5,当你存十个元素进去时,会扩增到12或者14

创建容器:

头文件中引入

#include<vector>

在主函数中创建容器

vector<类型> 容器命名,这里的类型可以是int,char等,看做是和创建数组类型一样int arr[ ]

#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int> s;
	return 0;
}

vector容器的创建除了像普通数组类型int ,char等,还能创建嵌套容器

像俄罗斯套娃一样,里面一层还一层,举例vector< vector<int> >ps;

 ps这个大容器就是存放vector<int>小容器的,小容器就存放int数组元素

初始化容器:

vector容器的初始化赋值就像数组int arr[ ]一样,在创建时可以同时赋值

	vector<int> s = {1,2,3};

也可以后面使用循环来逐步往容器里添加元素

容器和容器之间也可以用=来进行复制

	vector<int> s = {1,2,3,4,5,6};
	vector<int> b;
	b = s;

这样b容器里的值就和s容器一样了。

容器常用的几个函数:

size( )返回容器的大小,里面元素的个数
clear( )清空容器
font( )返回容器里第一个元素值
back( )返回容器最后一个元素值
push_back( 值)

将该值加入到容器尾部

pop_back( )将尾部的值删除
at( idx)返回idx下标的元素值,下标从0开始

代码演示:
 

#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int> s = { 1,2,3 };
	cout << "第一个元素:" << s.front() << endl;
	cout << "最后一个元素:" << s.back() << endl;
	s.push_back(4);
	cout << "添加之后最后一个元素:" << s.back() << endl;
	cout << "第二个元素值是:" << s.at(1);
	return 0;
}


    那么容器是如何遍历的呢?对数组int arr [ ]而言,数组名则代表元素首地址,使用for循环增加下标就可以遍历数组,其实还是指针的引用,对于vector容器而言同样是用指针来指向的。

  容器则是使用迭代器来指向容器内元素的具体位置,和指针一个原理。

迭代器:

先介绍几个常见的指向位置

begin( )容器内第一个位置
end( )容器内最后一个位置
rbegin( )逆向获取第一个位置
rend( ) 逆向获取最后一个位置
intsert( iterator,elem )在迭代器指向位置插入元素elem

     用迭代器来接收容器返回的元素位置,同样可以++和--使迭代器指向的位置移动,达到遍历容器内部元素的目的。

   使用 auto 关键字简化迭代器类型声明,

	auto it = s.begin();

it就相当于一个指针指向了容器的第一个位置;

要使用该位置的元素则要和指针一样用 *

	vector<int> s = { 1,2,3 };
	auto it = s.begin();
	//打印第一个元素
	cout << *it << endl;
	//打印第二个元素
	it++;
	cout << *it;

使用for循环遍历容器:

#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int> s = { 1,2,3 };
	for (auto it = s.begin(); it != s.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
	auto it = s.begin();//获取位置
	s.insert(it, 8);//插入元素8到第一个位置
	cout << "插入元素后容器内元素为:";
	for (auto it = s.begin(); it != s.end(); it++)
	{
		cout << *it << " ";
	}
	return 0;
}

s.insert(it, 8)的意思是往it指向的位置插入8这个元素,插入后it指向的后面元素会自动往后移

  • 34
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值