我正在研究一个小型SDL2示例,我正在考虑创建一个TextureManager。我有一个小抽象,一个处理IMG_LoadTexture和SDL_RenderCopy的类。在构造函数期间,我运行IMG_LoadTexture并将SDL_Texture *存储在成员变量上。之后,如果调用render()方法,我运行SDL_RenderCopy。我希望那些抽象的Texture对象存在于TextureManager中,它具有渲染器实例并处理所有渲染。
最好的方法是什么?一个矢量,包含所有纹理实例?怎么能更有效率?这是一个合适的抽象吗?
答案 0 :(得分:0)
最有效的容器类型与添加,删除或访问元素的频率有关,而不是元素的类型。
矢量最好是你经常访问它们但不做更改:O(1)用于随机访问,但最多O(N)用于添加(可能更少),O(N)用于删除如果你关心关于订购,O(1)否则。
列表很好,如果你做了很多插入,但插入都在列表的末尾:O(N)用于访问和删除,但O(1)添加到任一端。
我可以继续(deque,map),但我会说确定访问是最常见的需求,因此向量是最佳选择。
我不得不怀疑你是否在问别的东西,因为你添加了关于SDL的细节。但是你的问题是关于什么样的抽象会给你最大的效率。这是你打算问的问题吗?