首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据包含的类型检索向量的向量

根据包含的类型检索向量的向量
EN

Stack Overflow用户
提问于 2016-06-25 03:13:55
回答 1查看 53关注 0票数 0

我在一个小的3D引擎上工作,我想知道如何避免每次访问灯光、材质等时在我的整个层次结构(模型、灯光)中循环。

我决定创建一个单独的DataProvider,保留所有的列表,指向材质的指针列表,或者指向灯光的指针列表,任何类型的列表。

但是,我的代码看起来太具侵入性,每次我必须添加一个新列表时,我都必须将其添加到类属性中。

我最终决定这样做:

代码语言:javascript
复制
class DataProvider
{
  public:
    using DataListContainer = std::vector<std::vector<boost::any>>;
    ...
private:
   DataListContainer data_;

我要解决的问题是根据给定的类型获取内部向量?这里的整个过程看起来很混乱。除此之外,使用boost::any类型并不能真正保证内部向量中的类型是唯一的,它可能是混合的。存储向量的向量的正确方法是什么,根据它们存储的类型检索内部向量?

EN

回答 1

Stack Overflow用户

发布于 2016-06-25 03:22:32

如果我没弄错你想要什么,你可能会用这样的东西:

代码语言:javascript
复制
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>;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38020579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档