C++ STL 标准模板库的学习 (一) 有关容器,算法,迭代器的基本认识 20180319 day10

C++ STL(标准模板库)
容器、算法、迭代器

STL 数据结构与算法的有效分离

可以根据以下程序先进行一定的理解,不同的main()注意切换


#include<iostream>
#include"vector"  //容器头文件
#include"algorithm"   //算法库头文件
using namespace std;

/*总结*/
//1 容器是将元素拷贝进来,要确保元素可以复制,只要涉及到类对象的时候,成员是否有指针将会有关于深拷贝浅拷贝的问题
//2 容器不仅可以装基本数据类型,还可以装元素,还可以装指针
//3 迭代器可以遍历各种各样的容器  取决于容器中组装的元素
//4 算法 与 迭代器无缝衔接



void printfV(vector<int> &a)   //使用引用

{
	a.push_back(1);  //将数据存到vector容器之中
	a.push_back(2);
	a.push_back(3);
	a.push_back(3);
	a.push_back(3);

	 
	//迭代器相当于一个指针  具有很多分类
	for (vector<int>::iterator it = a.begin(); it != a.end(); it++)  //使用到了迭代器  
	{
		cout << *it << " " ;   
	}
}


//容器中可以安装基础数据类型变量

int main1()
{
	vector<int> v1;  //vector 容器  将元素拷贝到容器之中

	printfV(v1);

	//算法  举例一个count()算法

	int num1 = count(v1.begin(), v1.end(), 3);   //查找容器中3的个数并且进行一个返回
	cout << "num1 = " << num1 << endl;

	system("pause");
	return 0;
}

class  Teacher
{
public:

	Teacher()
	{
		age = 33;
	}
	

public:
	int age;

};



//容器中可以安装类对象

int main2()
{
	Teacher v1,v2,v3;
	vector<Teacher> a;

	a.push_back(v1);  //将类的对象存到vector容器之中   并且容器有效的实现了算法与数据类型的分离
	a.push_back(v2);
	a.push_back(v3);
	
	//迭代器相当于一个指针  具有很多分类
	for (vector<Teacher>::iterator it = a.begin(); it != a.end(); it++)  //使用到了迭代器  
	{
		cout << it->age << " ";
	}

	system("pause");
	return 0;
}

//容器中还可以放置指针
int main()
{
	Teacher d, e, f;
	d.age = 31;
	e.age = 32;
	f.age = 33;

	Teacher  * v1, *v2, *v3;  //指针

	v1 = &d;    //指向一定的对象,否则会出现空指针
	v2 = &e;
	v3 = &f;

	vector<Teacher *> a;

	a.push_back(v1);    //将类的对象存到vector容器之中   并且容器有效的实现了算法与数据类型的分离
	a.push_back(v2);
	a.push_back(v3);



	//迭代器相当于一个指针  具有很多分类
	for (vector<Teacher *>::iterator it = a.begin(); it != a.end(); it++)  //使用到了迭代器  
	{
		//使用(*it) 是因为本身it指向的为指针变量,因此获取值,还需要在增加一个*号

		cout << (*it)->age << " ";
	}

	system("pause");
	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值