gpt4 book ai didi

c++ - 如何有效地实现将 vector 的数据分配给多个变量?

转载 作者:太空狗 更新时间:2023-10-29 20:08:53 27 4
gpt4 key购买 nike

例如

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

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

最佳答案

折叠表达式来拯救!

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

如果 if 必须在 C++11 中,您可以使用虚拟数组技巧:

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) ...};
}

关于c++ - 如何有效地实现将 vector 的数据分配给多个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51731299/

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