如何将三个功能合而为一?

时间:2019-12-15 13:34:15

标签: c++

我需要将所有内容结合起来,但是我什至不知道如何做到这一点。

如果这不可能,请写一个答案,这样我就不会寻求实现它的方法。

template <class T1, class T2, class T3>
auto vector_ptr(T1& size, T2& size2, T3& size3) {
    auto result = make_shared<vector<vector<vector<int64_t>>>>(size, vector<vector<int64_t>>(size2, vector<int64_t>(size3)));
    return *result;
}

template <class T1, class T2>
auto vector_ptr(T1& size, T2& size2) {
    auto result = make_shared<vector<vector<int64_t>>>(size, vector<int64_t>(size2));
    return *result;
}

template <class T1>
auto vector_ptr(T1& size) {
    auto result = make_shared<vector<int64_t>>(size);
    return *result;
}

主要

auto v_arr3 = vector_ptr(size3, size2, size);

auto v_arr2 = vector_ptr(size2, size);

auto v_arr1 = vector_ptr(size);

,如有必要,依此类推。

auto v_arr4 = vector_ptr(size4, size3, size2, size);

1 个答案:

答案 0 :(得分:1)

result['match'] = (result.iloc[:, 1:].eq(result.iloc[:, 1], axis=0)).all(1) 

尽管#include <memory> #include <type_traits> #include <vector> template<class T, class Head> auto make_vector(Head size) { return std::vector<T>(size); } template<class T, class Head, class ...Args, std::enable_if_t<(sizeof...(Args) > 0), int> = 0> auto make_vector(Head size, Args... args) { return std::vector(size, make_vector<T, Args...>(args...)); } template<class T, class ...Args> auto vector_ptr(Args... args) { using vector_type = decltype(make_vector<T>(args...)); return std::make_shared<vector_type>(make_vector<T>(args...)); } 要求使用c++17扣除指南,但可以通过使用std::vector来避免。

可以使用decltype()代替SFINAE来组合

make_vector

if constexpr