2

我正在研究一个小型 SDL2 示例,并且正在考虑创建一个 TextureManager。我有一个小的抽象,一个处理 IMG_LoadTexture 和 SDL_RenderCopy 的类。在构造函数期间,我运行 IMG_LoadTexture 并将 SDL_Texture* 存储在成员变量上。之后,如果调用 render() 方法,我运行 SDL_RenderCopy。我希望那些抽象的 Texture 对象存在于 TextureManager 中,它具有渲染器实例并处理所有渲染。

最好的方法是什么?一个带有所有纹理实例的向量?这怎么能更有效率?这是一个适当的抽象吗?

4

1 回答 1

0

最有效的容器类型与添加、删除或访问元素的频率有关,而不是元素的类型。

如果您经常访问它们但不进行更改,则向量是最好的:O(1) 用于随机访问,但最多 O(N) 用于添加(可能更少),O(N) 用于删除,如果您关心排序, O(1) 否则。

如果您进行大量插入,列表很好,但插入都在列表的末尾:访问和删除 O(N),但添加到任一端的 O(1)。

我可以继续(deque,map),但我会说访问是最常见的需求,所以向量是要走的路。

不过,我想知道您是否在问其他问题,因为您添加了有关 SDL 的详细信息。但是你的问题是关于什么样的抽象会给你最大的效率。这是你想问的问题吗?

于 2014-09-03T20:51:16.957 回答