template <typename T, typename U> static void convert(const std::vector<std::vector<T>>& inputs, std::vector<std::vector<U>>* outputs) { outputs->reserve(inputs.size()); std::transform(inputs.begin(), inputs.end(),outputs->back, [](const std::vector<T>& p, std::vector<U>* q) { return convert(p, q); }); }
时间: 2024-04-04 14:31:14 浏览: 71
自定义的Troop<T>泛型类( c++, java和c#)的实现代码
这是一个 C++ 的函数模板,用于将一个二维的元素类型为 T 的向量 inputs 转换为元素类型为 U 的向量 outputs。函数中使用了 lambda 表达式和 STL 算法 transform()。
具体来说,函数首先通过 reserve() 函数为输出向量 outputs 分配足够的内存,以避免多次动态地分配空间。然后,使用 STL 算法 transform() 对输入向量 inputs 进行转换,并将结果存储在输出向量 outputs 中。在 transform() 函数中,使用了一个 lambda 表达式,该表达式将每个输入向量 p 转换为一个输出向量 q,并返回结果。其中,convert() 是另一个函数模板,用于将元素类型为 T 的向量转换为元素类型为 U 的向量。
需要注意的是,调用该函数时,需要传递一个指向输出向量的指针,该指针指向的向量需要在调用之前已经被创建并分配足够的空间。
阅读全文