gpt4 book ai didi

c++ - 在 SDL2 中创建 TextureManager 的最有效方式

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:55:54 25 4
gpt4 key购买 nike

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

什么是最好的方法?一个包含所有 Texture 实例的 vector ?这怎么能更有效率?这是一个适当的抽象吗?

最佳答案

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

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

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

我可以继续(双端队列、映射),但我要说的是,访问是最常见的需求,所以 vector 是必经之路。

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

关于c++ - 在 SDL2 中创建 TextureManager 的最有效方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19165625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com