代码之家  ›  专栏  ›  技术社区  ›  user1899020

如何有效地实现将一个向量的数据分配给多个变量?

  •  3
  • user1899020  · 技术社区  · 7 年前

    例如

    void assign(vector<int> const& v, int a, float b)
    {
        a = v[0];
        b = (float)v[1];
    }
    

    这里的值类型不需要相同。我想做一个函数来分配变量的数量。我可以使用变量函数。但我认为使用参数包可能更有效。如何实施?谢谢!

    1 回复  |  直到 7 年前
        1
  •  8
  •   HolyBlackCat    7 年前

    template <typename ...P> void assign(const std::vector<int> &v, P &... params)
    {
        std::size_t index = 0;
        (void(params = static_cast<P>(v[index++])) , ...);
    }
    

    template <typename ...P> void assign(const std::vector<int> &v, P &... params)
    {
        std::size_t index = 0;
        using dummy = int[];
        (void)dummy{0, (void(params = static_cast<P>(v[index++])), 0) ...};
    }