我只需要一包"东西".它不需要是一个集合,一个地图甚至没有任何特定的顺序.我只需要能够添加东西并迭代它,仅此而已.我不认为它会非常大,但如果确实如此,它就不会变得非常糟糕.
我应该使用什么容器?
vector可能是所有容器的最低开销.只要你不在中间添加或删除东西.
默认情况下,使用向量...但是,如果可能的话,不要忘记使用类型间接!
原因是如果你只需要迭代,那么你应该能够使用任何一个可用的STL容器,并通过typedef间接选择它一次.
例如,假设您最初选择一个向量(这是默认选择):
typedef std::vector<MyThing> MyThingContainer ;
Run Code Online (Sandbox Code Playgroud)
然后像往常一样使用容器:
void foo(MyThingContainer & things)
{
for(MyThingContainer::iterator it = things.begin(),
itEnd = things.end() ;
it != itEnd ;
++it)
{
MyThing & thing = *it ;
// Do something with that thing
}
}
Run Code Online (Sandbox Code Playgroud)
这样,当你找到一个列表,或者双端队列,或者任何比向量更好的容器时,只需更改typedef并重新编译,就可以更改容器的真实类型.