容器vector的一些使用与迭代器

容器vector的一些使用与迭代器

在公司类中的一些使用

上代码
这里只是简单探讨一下,没有完整代码,意会便可。

#include <vector>
......
int main()
{
	vector<Employee> empvec;
	Employee emp1;//初始化后的名字为"lihao"
	empvec.push_back(emp1);//此处要调用复制构造函数
	emp1.setName("hello");
	empvec[0].displayInfo();//❶
	emp1.displayInfo();//❷
	return 0;
}

在这里,我们期望当我们改变emp1时,empvec[0]也会变,即我们希望empvec就是emp1。但由于要调用复制构造函数,push_back进去的并不是原来的emp1,而是一个新的Employee对象,从而无法实现以上期望。故❶❷的输出结果结果不同。

在容器vector中装入Employee本身并不能达到我们的目的,但我们可以装入Employee的指针来指向我们要改变emp1。于是就改为下面的样子

#include <vector>
......
int main()
{
	vector<Employee*> empvec;
	Employee emp1;
	empvec.push_back(&emp1);
	emp1.setName("hello");
	empvec[0]->displayInfo();
	emp1.displayInfo();
	return 0;
}

那么在公司类中的员工类(基类)对象就可以用容器vector来创建动态向量,而不是用原来的Employee m_emps[5];固定数组。*

class Company{
private:
	......
	vector<Employee*> m_emps;
	......
};

用vector可以随加随有,不会像固定数组哪样有限制。

迭代器

迭代器是面向对象版本的指针,它们提供了访问容器、序列中每个元素的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值