使用c ++

时间:2018-07-31 19:20:54

标签: c++ stack

堆栈可能无法满足我的需求,因此如果需要更好的数据结构,请教育我。

我正在尝试从最近创建到最早的记录对象中检索。我决定将这些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(); 
    }
}

1 个答案:

答案 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();
    }
}