我需要将所有内容结合起来,但是我什至不知道如何做到这一点。
如果这不可能,请写一个答案,这样我就不会寻求实现它的方法。
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);
答案 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