vector存放自定义类型数据 class Person以及迭代器的初步了解

文章介绍了如何在C++中使用vector存储自定义类型如Person,并展示了在排序时需要提供比较函数comperperson。此外,还讨论了迭代器在遍历容器如vector中的作用,作为访问容器元素的通用接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

vector存放自定义类型数据 class Person

迭代器的初步了解


vector存放自定义类型数据 class Person

bool comperperson(Person& ob1, Person& ob2)//当自定义类型需要排序sort的时候
        //由于sort()不认识你所定义的类型,所以需要排序规则
 

#include<algorithm>
	class Person{
		friend void printfPerson(vector<Person>& ob);
		friend bool comperperson(Person& ob1, Person& ob2);
	private:
		int num;
		string name;
	public:
		Person() {};
		Person(int num, string str)
		{
			this->num = num;
			this->name = str;
		}
	};
	bool comperperson(Person& ob1, Person& ob2)//当自定义类型需要排序sort的时候
		//由于sort()不认识你所定义的类型,所以需要排序规则
	{
		return ob1.num < ob2.num;
	}
	void text01()
	{
		vector<Person>ob;
		ob.push_back(Person(4,"kk"));
		ob.push_back(Person(3, "hh"));
		ob.push_back(Person(1, "ll"));
		ob.push_back(Person(5, "jj"));
		ob.push_back(Person(2, "xx"));
		printfPerson(ob);
		cout << endl;
		sort(ob.begin(),ob.end(), comperperson);
		printfPerson(ob);
	}
	
void printfPerson(vector<Person>&ob)
{
	//有一个点就是当访问容器的时候不管你拿什么第一步永远都是拿它的迭代器
	vector<Person>::iterator it = ob.begin();
	for(;it!=ob.end();it++)
	cout << (*it).name << "  " << (*it).num<<endl;
}

int main()
{
	text01();
	return 0;
}

迭代器的初步了解

迭代器(iterable)是一个超级接口! 是可以遍历集合的对象,为各种容器提供了公共的操作接口,隔离对容器的遍历操作和底层实现,从而解耦。“所以说就是它为容器提供了一个公共接口,方便遍历”

迭代器是一种对象,它能够用来遍历STL容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址,所以可以认为迭代器其实就是用来指向容器中数据的指针,我们可以通过改变这个指针来遍历容器中的所有元素。-----这是一个博主的文章,可以借鉴一下

下面是一个使用 C++ 实现 `vector` 和 `Person` 类的迭代器功能,并能打印 `vector` 中多个 `Person` 对象的年龄和姓名的示例代码: ```cpp #include <iostream> #include <vector> #include <string> class Person { private: std::string name; int age; public: Person(const std::string& n, int a) : name(n), age(a) {} std::string getName() const { return name; } int getAge() const { return age; } }; int main() { std::vector<Person> people; people.push_back(Person("Alice", 25)); people.push_back(Person("Bob", 30)); people.push_back(Person("Charlie", 35)); // 使用迭代器遍历 vector std::vector<Person>::iterator it; for (it = people.begin(); it != people.end(); ++it) { std::cout << "Name: " << it->getName() << ", Age: " << it->getAge() << std::endl; } return 0; } ``` 在上面的代码中,我们首先定义了一个 `Person` 类,其中包含了姓名和年龄两个成员变量,以及相应的访问函数。然后,我们创建了一个 `vector` 对象 `people`,并向其中添加了几个 `Person` 对象。 接下来,我们使用迭代器 `std::vector<Person>::iterator` 来遍历 `people` 中的每个元素。通过迭代器,我们可以访问每个 `Person` 对象的成员函数,从而获取其姓名和年龄,并打印输出。 运行上述代码,将会输出以下结果: ``` Name: Alice, Age: 25 Name: Bob, Age: 30 Name: Charlie, Age: 35 ``` 这样就实现了使用迭代器功能遍历 `vector` 中多个 `Person` 对象,并打印它们的年龄和姓名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值