c++初识vector存放内置数据类型 学习笔记

前言:

我是在哔哩哔哩黑马程序员中c++课程p186初识-vector存放内置数据类型学会的,课程学习起来个人感觉非常不错,是c++宝藏课程。

一.创建vector容器 

1.包含<vector>头文件 

#include<vector> 

2.创建一个(int型数组) vector容器   

vector<int> v;                                                                   

3.向容器中插入数据 尾插数据                                                               

调用容器里的push_back()成员函数  v.push_back();          

4.代码实现

#include<vector>
#include<algorithm>//标准算法头文件

//vector容器存放内置数据类型

//普通打印函数
void myPrint(int val)
{
	cout << val << endl;
}
void test01()
{
	//创建了一个vector容器,int型数组
	vector<int> v;
	//向容器中插入数据 尾插数据
	v.push_back(10);
	v.push_back(20);
	v.push_back(30);
	v.push_back(40);

二.三种遍历方法

1.通过迭代器访问容器中的数据进行遍历

 类似顺序表遍历 迭代器:广义上的指针   创建 迭代器对象 itBegin = v.begin(); itEnd = v.end();       其中:v.begin() 和 v.end() 是vector容器里的成员函数 直接调用即可 

vector<int>::iterator itBegin = v.begin();//起始迭代器 指向容器中的第一个元素
vector<int>::iterator itEnd = v.end();   //结束迭代器 指向容器中最后一个元素的下一个位置

技巧:(迭代器自增最好用前置递增,能节约开销)

代码实现:

//通过迭代器访问容器中的数据    类似顺序表        迭代器 广义上的指针    
//vector<int>::iterator itBegin = v.begin();//起始迭代器 指向容器中的第一个元素 //vector<int>::iterator itEnd = v.end();   //结束迭代器 指向容器中最后一个元素的下一个位置

//第一种遍历方法
	while (itBegin != itEnd)
	{
		cout << *itBegin<<endl;
		itBegin++;
	}

2.通过for循环遍历

与第一种方法类似,但更简单。代码实现如下:

//第二种遍历方法
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
	{
		cout << *it << endl;
    }

在 for (vector<Person>::iterator it = v.begin(); it != v.end(); it++)中,我们尽可能使用 it != v.begin();而不是 it < v.begin(); 因为在后面的容器中,有链表存储方式的容器,如deque,queue,stactk,此时迭代器(类似指针)所指向的地址并不是连续的,用地址比较的结果无法用来判断谁在前,谁在后,是无序的,只能通过 判断是否 == .end() 的地址来结束循环。
 

3.通过利用STL提供遍历算法

1.先包含标准算法头文件 <algorithm>

2.调用算法头文件所包含的成员函数 for_each()   其底层原理如下:右键 for_each() 转到定义即可 返回点击左上角源文件即可 

大概意思就是:将起始、结束迭代器 传入一个函数之中(跟回调函数一样)        for_each(v.begin(),v.end(),函数名) 回调此函数 

3.具体做法:

首先在外此函数体外创建一个新的打印函数 myprint(int val){}; 

代码实现如下:

//普通打印函数
void myPrint(int val)
{
	cout << val << endl;
}

其次:在原来函数中 添加 for_each(v.begin(), v.end(), myPrint);即可 

代码实现如下:

//第三种遍历方式
    //利用STL提供遍历算法 头文件 <algorithm>
	for_each(v.begin(), v.end(), myPrint);  // for_each(v.begin(),v.end(),函数名) 回调此函数

三.完整代码                                                                                

#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>//标准算法头文件

//vector容器存放内置数据类型

//普通打印函数
void myPrint(int val)
{
	cout << val << endl;
}
void test01()
{
	//创建了一个vector容器,int型数组
	vector<int> v;
	//向容器中插入数据 尾插数据
	v.push_back(10);
	v.push_back(20);
	v.push_back(30);
	v.push_back(40);
	通过迭代器访问容器中的数据    类似顺序表        迭代器 广义上的指针
	//vector<int>::iterator itBegin = v.begin();//起始迭代器 指向容器中的第一个元素
	//vector<int>::iterator itEnd = v.end();   //结束迭代器 指向容器中最后一个元素的下一个位置

	第一种遍历方法
	//while (itBegin != itEnd)
	//{
	//	cout << *itBegin<<endl;
	//	itBegin++;
	//}
	//第二种遍历方法
	/*for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
	{
		cout << *it << endl;
	 }*/
	//第三种遍历方式
    //利用STL提供遍历算法 头文件 <algorithm>
	for_each(v.begin(), v.end(), myPrint);// for_each(v.begin(),v.end(),函数名) 回调此函数

}
int main()
{
	test01();
	system("pause");
	return 0;
}

四.代码运行结果:                                                                        

                                                                                                                                           

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小苏先生.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值