vector容器02之存放自定义数据类型

2021-03-02 16:56:56 浏览数 (1)

代码语言:javascript复制
#include<iostream>
#include<string>
using namespace std;
//容器可以简单理解为数组,迭代器可以简单理解成指针
//包含头文件
#include<vector>
#include<algorithm>  //包含标准算法头文件
//vector容器存放自定义数据类型
class man {
public:
	man(string a,int b):name(a),age(b){}
	string name;
	int age;
};
void print(man& val)
{
	cout << "name: " << val.name << "   age: " << val.age << endl;
}
//1.
void test01()
{
	man m1("a", 1);
	man m2("b", 2);
	//创建一个vector容器
	//初始化(或者使用尾插法)
	vector<man> arr = { m1,m2 };
	//打印输出:
	//one way
	//vector迭代器
	vector<man>::iterator beg = arr.begin();
	vector<man>::iterator end = arr.end();
	while (beg != end)//迭代器可以理解为指针
	{
		cout << "name: " << beg->name << "   age: " << beg->age << endl;
		beg  ;
	 }
	//two way
	for(vector<man>::iterator beg = arr.begin();beg!=arr.end();beg  )
	cout << "name: " << beg->name << "   age: " << beg->age << endl;
	//three way
	for_each(arr.begin(), arr.end(), print);
}

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

vector容器内存放自定义数据类型指针

代码语言:javascript复制
#include<iostream>
#include<string>
using namespace std;
//容器可以简单理解为数组,迭代器可以简单理解成指针
//包含头文件
#include<vector>
#include<algorithm>  //包含标准算法头文件
//vector容器存放自定义数据类型
class man {
public:
	man(string a,int b):name(a),age(b){}
	string name;
	int age;
};
void print(man* it)
{
	cout << "name:  " << it->name << "  age: " << it->age << endl;
}
//2.存放自定义书库类型指针
void test02()
{
	man m1("a", 1);
	man m2("b", 2);
	//初始化容器数据
	vector<man*> arr; //传入的是指向man类型的指针,相当于数组中存放的是地址
	//尾插法
	arr.push_back(&m1);
	arr.push_back(&m2);
	//打印输出
	//one way
	//注意迭代器可以简单理解为指针,(*beg)后的数据类型为尖括号里面的数据类型
	//因此这里的beg类似于指向man*类型的二级指针
	vector<man*>::iterator beg = arr.begin();
	vector<man*>::iterator end = arr.end();
	while (beg != end)
	{
		cout << "name:  " << (*beg)->name << "  age: " << (*(*beg)).age << endl;
		beg  ;
	}
	//two way
	for(vector<man*>::iterator it=arr.begin();it!=arr.end();it  )
	cout << "name:  " << (*it)->name << "  age: " << (*(*it)).age << endl;
	//three way
	for_each(arr.begin(), arr.end(), print);//第三个参数是返回man类型的指针
}
int main()
{
	test02();
	system("pause");
	return 0;
}

0 人点赞