【发布时间】:2013-01-26 06:18:07
【问题描述】:
我从 DirectX 获取了存储我的顶点信息的内存位置。处理顶点信息的一种极其方便的方法是使用包含顶点信息的结构的 std::vector。
鉴于我有一个指向大缓冲区的指针,我可以使用 std::vector 来管理缓冲区中的元素吗?构造一个 std::vector 经常会导致它有自己的地址,这不是我真正想要的。我可以以某种方式使用 operator Placement new 吗?
【问题讨论】:
-
你想从
std::vector使用什么操作? -
只需 .push_back() 添加顶点,删除它们的能力会很棒但不是必需的,并且 .size() 可以知道容器中的顶点数。
-
push_back将导致向量在不同的内存位置分配一个新的内存块,以便为其他元素留出空间。 -
看起来最简单的方法可能只是编写我自己的结构然后,std::vector 似乎很难为此目的环绕。
-
@kvanberendonck 您可以将
std::vector与自定义分配器一起使用,该分配器不断返回相同的缓冲区空间,但如果向量请求的空间比缓冲区的空间多,并且没有简单的要求向量精确分配缓冲区大小的方法。
标签: c++ vector memory-address facade