c++ - 如何实现从模板参数返回 vector 的模板函数?

标签 c++ c++11

有没有办法(在 C++ 11 中)实现以下方法:

template <typename T>
std::vector<T> makeTypedVector(void* array, int n)
{
    //construct an std::vector of type T from the given array
}

我会分享我尝试过的方法,但我不知道如何实现它:)

编辑:

对于数组而不是 std::vector 是否可以使用相同的方法?

编辑2:

用法: 我们正在存储 (void* array,Type) 的元组。我需要能够比较同一数据类型的两个元素。因此,我想将 void* 数组转换为类型化 vector ,以便了解如何比较两个元素

最佳答案

您可以执行以下操作来创建一个 vector ,该 vector 是给定数组的拷贝:

template <typename T>
std::vector<T> makeTypedVector(void* array, int n)
{
    const T* a = reinterpret_cast<T*>(array);
    return {a, a + n};
}

但是你先得到一个void*似乎很奇怪。

关于c++ - 如何实现从模板参数返回 vector 的模板函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30049317/

相关文章:

c++ - g++ 和 clang++ 在 `std::make_index_sequence` 和 `std::index_sequence` 用于模板参数默认类型时的不同行为

c++ - 处理 2+ 模板参数的最佳方法?

c++ - 是否可以在 header 中声明 constexpr 类并将其定义在单独的 .cpp 文件中?

c++ - 为什么我的终止处理程序从未被调用?

c++ - 嵌套的 unique_ptr 和 STL 容器

c++ - 用自己的版本替换 std::async 但 std::promise 应该住在哪里?

C++ 无序映射常量时间访问?

java - JNI 内存管理

c++ - 是什么让一种语言不愿意/不能包含 RAII?

c++ - 管理单例析构函数