c++ - 如何在 C++ 中创建对象列表并使用其方法?
问题描述
我创建了这个类,我需要使用 for(迭代器)来输入值,它们不一定是 i,任何其他值,因为我需要使用一个列表:
#include <iostream>
#include <list>
using namespace std;
// 1ra clase base
class Person {
int e;
public:
Person(int);
void printDates();
};
Person::Person(int x) { e = x; }
void Person::printDates() { cout << e; }
int main() {
list<Person> persons;
for (int i = 0; i < 5; i++) {
Person person(i);
persons.push_front(person);
}
// for(int i = 0; i < 5; i++)
// {
// hombres[i].printDates();
// }
}
我需要使用 personDates 方法,以及您可以添加的任何其他方法,无论是在列表中还是在另一个列表中。
解决方案
问题是 list 没有提供index
到容器中。
persons[i] // does not work for list (though it does work for vector).
所以你需要使用一个迭代器。
旧版本的 C++ 是这样完成的:
for(auto loop = persons.begin(); loop != persons.end(); ++loop) {
loop->printDates();
}
在现代版本的 C++ 中,这被简化为:
for(auto& item: persons) {
item.printDates();
}
推荐阅读
- jsf - JSF,Primefaces:当我快速单击菜单上的按钮时,UI 的呈现不正确。如何找到原因?
- angular - 在 FactoryProvider 中检索和响应路由参数
- mysql - Sqoop 功能已从 DSE 中删除
- python - 随着时间的推移计算建筑中的人数
- kubernetes - Terraform:模块输出未被识别为变量
- unit-testing - MockK - 在顶级 val 上调用模拟/间谍顶级扩展方法
- typescript - 用笑话模拟打字稿中的导入类
- jquery - jQuery html 方法在 Chrome 上不起作用
- python - 如何在 Windows 上通过 ID 访问网络摄像头流
- javascript - Vue - 根据父数据的状态渲染组件