堆栈可能无法满足我的需求,因此如果需要更好的数据结构,请教育我。
我正在尝试从最近创建到最早的记录对象中检索。我决定将这些Record对象压入堆栈,以使检索变得容易。我程序中的每个Person对象都有一个堆栈(以使每个Person的记录轻松分开),并且每个Person都有一堆Records。如果我想要n条最近制作的记录,我可以top()
和pop()
这n条记录,由于堆栈的缘故,它们已经是有序的。
但是,我刚刚意识到我正在更改堆栈内容,因此丢失了所有弹出的记录。
是否有更好的方法来实现我的目标,即为了保留容器而对记录进行排序?请告诉我。谢谢。
void Person::printAllRecords() {
while (this->log.size() >= 1)
{
std::string recordType = this->log.top()->checkRecordType();
std::cout << recordType << " made on: ";
this->log.top()->displayDateCreated();
this->log.pop();
}
}
答案 0 :(得分:0)
您可以使用std::vector
遍历记录,而无需更改记录中的数据。您可以在cplusplus.com上了解std::vector
。
使用您自己的类初始化矢量:
std::vector<CustomClass> log;
for(int i=0; i < numberOfItems; i++){
CustomClass customClass;
//Create object of your class and Initialse it with values.
log.push_back(customClass);
}
现在遍历向量:
void Person::printAllRecords() {
for( int i = this->log.size()-1; i>=0; i--)
{
std::string recordType = this->log.at(i).checkRecordType();
std::cout << recordType << " made on: ";
this->log.at(i).displayDateCreated();
}
}