好的,我设置了一个非常基本的示例议程,它具有以下特征并且行为如下:
这将是一群宇航员(班级宇航员),可以从地球到月球和火星等旅行。然后我想写下每个宇航员在每个星期的不同时期(班级)星体。所以议程将有一个单独的文本文件来存储数据。以下是时期和宇航员课程以及可能成为使用议程的人的一个例子:
class astronaut
{
int id;
date bday;
vector<period> V; or list<period> L;
bool he_dead;
}
class period
{
int CelestialBody; //0 for earth, 1 for moon, 2 for mars, etc.
int Establishment;
int Duty;
date EndDate;
}
使用它的人的例子:
open program
add_astronaut(01/01/2013)
close program
open program
select astronaut from list
end_period(Earth, 01/07/2013)
close program
open program
select astronaut from list
end_period(Mars, 01/01/2014)
close program
open program
select astronaut from list
end_period(Earth, 01/07/2014)
he_dead()
close program
好的,结束,我的想法是你永远不会删除任何宇航员或文本文件中的任何数据,它是一个寄存器,所有发生的删除都是程序在关闭之前清除其内存,并在保存到.txt之后。此外,有时候其他一些字段将留空,以便将来完成。
那么问题是,最好的是宇航员列表,每个宇航员都有一个周期矢量,或宇航员的矢量,每个宇航员都有一个周期列表?
我是STL的新手,在内存管理方面需要考虑一些背景理由。
答案 0 :(得分:3)
鉴于我(尽管有限)了解你要做什么,应该使用宇航员和时期的矢量。它们是“默认”STL容器。如果要在数据中间进行大量插入和删除,列表非常有用。
以下是关于SO的两者的良好比较:vector vs. list in STL
答案 1 :(得分:1)
我会为两者使用矢量。
默认情况下使用向量:只要您在容器的末尾插入/删除它们就会更快,并且它们被分配给连续的内存块,因此它们在较小时会占用较少的内存。
如果你的某个容器将 large ,你也可以考虑使用deque
,这将允许程序将内存分成几个较小的块。