根据所包含的类型检索向量的向量
Retrieve vector of vector according to contained type
我正在制作一个小型3D引擎,我想知道如何避免每次访问灯光,材料等时循环通过我的整个层次结构(模型,灯光)。
我决定创建一个单例DataProvider,保存所有的列表,指向材料的指针列表,或指向灯的指针列表,任何类型的列表。
但是,我的代码看起来太侵入了,每次我必须添加一个新的列表,我必须将它添加到类属性中。
我最终决定这样做:
class DataProvider
{
public:
using DataListContainer = std::vector<std::vector<boost::any>>;
...
private:
DataListContainer data_;
我要解决的问题是根据给定的类型获得内部向量?整个过程似乎很混乱。除此之外,使用boost::any
类型并不能真正保证内部向量中的类型是唯一的,它可能是混合的。存储向量的向量的合适方法是什么,根据它们存储的类型检索内部向量?
如果我正确理解了你想要什么,你可以使用这样的内容:
template <typename ... Ts>
class DataProviderT
{
public:
using DataListContainer = std::tuple<std::vector<Ts>...>;
template <typename T>
std::vector<T>& GetVector() { return std::get<std::vector<T>>(data_); }
private:
DataListContainer data_;
};
using DataProvider = DataProviderT<Model, Light>;
相关文章:
- C++中函数的向量返回类型引发错误
- 具有 STL 向量类型成员的类的复制内存
- 创建一个类来访问和指定向量类型,并构建一个获取位置并为其分配区域的类
- 是否可以有一个模板函数,可以将向量和非向量类型都作为参数
- 具有基元类型的模板向量类型
- 在索引和值类型上参数化的惯用向量类型
- 使用迭代器成员函数是否仅适用于某些向量类型"empty()"?
- 通过glUniform 将 GLM 的向量类型传递给 OpenGL
- 尝试将用户定义的向量类型插入用户定义的类型向量
- 使用类作为向量类型时出错 - "Undeclared identifier"
- 在C++中,当两个向量类型不同时,如何将值存储到向量内部的向量中
- 如何访问和存储向量类型的结构成员
- 按参数中的向量类型重载函数
- boost::variant:具有递归向量类型的奇怪行为
- LLVM 传递计数向量类型指令
- 用异构boost::融合向量类型数据填充std::vector
- 如何定义自定义类的向量类型
- 真正的动态向量类型
- 如何在类的属性/变量中使用组合类作为向量类型
- 更快地删除向量类型