实现C + +实现vector和person的iter迭代器功能,并能打印vector中person中的年龄和姓名(对象给多个)。
时间: 2024-04-12 17:30:33 浏览: 106
下面是一个示例代码,展示如何使用C++实现一个简单的vector和person的iter迭代器功能,并打印vector中person的年龄和姓名:
```cpp
#include <iostream>
#include <vector>
#include <string>
// 定义Person类
class Person {
public:
Person(const std::string& name, int age) : m_name(name), m_age(age) {}
std::string getName() const {
return m_name;
}
int getAge() const {
return m_age;
}
private:
std::string m_name;
int m_age;
};
// 定义Vector类
template<typename T>
class Vector {
public:
// 定义迭代器类
class Iterator {
public:
Iterator(T* ptr) : m_ptr(ptr) {}
T& operator*() const {
return *m_ptr;
}
Iterator& operator++() {
++m_ptr;
return *this;
}
bool operator!=(const Iterator& other) const {
return m_ptr != other.m_ptr;
}
private:
T* m_ptr;
};
// 添加元素到vector
void push_back(const T& element) {
m_data.push_back(element);
}
Iterator begin() {
return Iterator(&m_data[0]);
}
Iterator end() {
return Iterator(&m_data[m_data.size()]);
}
private:
std::vector<T> m_data;
};
int main() {
Vector<Person> people;
// 添加Person对象到vector
people.push_back(Person("Alice", 25));
people.push_back(Person("Bob", 30));
people.push_back(Person("Charlie", 35));
// 使用迭代器打印vector中Person的年龄和姓名
for (auto it = people.begin(); it != people.end(); ++it) {
std::cout << "Name: " << it->getName() << ", Age: " << it->getAge() << std::endl;
}
return 0;
}
```
在上面的代码中,我们首先定义了一个Person类,它有一个姓名和年龄的成员变量。然后,我们定义了一个Vector类,它使用模板来存储不同类型的元素,并实现了迭代器功能。Vector类中的迭代器类定义了`operator*`、`operator++`和`operator!=`等运算符重载函数,使得我们可以通过迭代器来遍历Vector中的元素。
在主函数中,我们创建了一个Vector对象,并向其添加了几个Person对象。然后,我们使用迭代器遍历Vector中的每个Person对象,并打印其姓名和年龄。
希望这个示例能帮助到你!如果你还有其他问题,请随时提问。
阅读全文