Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何基于模板连接2个数组? 我试图熟悉C++模板。我需要编写一个连接2个数组的函数模板: template<typename T, int Size> class Array { public: void push(int i, const T& t) { _elem[i] = t; } private: T _elem[Size]; }; Array<int,3> a1; Array<int,4> a2; 模板 类数组 { 公众: void push(int i,const T&T){u elem[i]=T;} 私人: T_elem[大小]; };_C++_Templates - Fatal编程技术网

如何基于模板连接2个数组? 我试图熟悉C++模板。我需要编写一个连接2个数组的函数模板: template<typename T, int Size> class Array { public: void push(int i, const T& t) { _elem[i] = t; } private: T _elem[Size]; }; Array<int,3> a1; Array<int,4> a2; 模板 类数组 { 公众: void push(int i,const T&T){u elem[i]=T;} 私人: T_elem[大小]; };

如何基于模板连接2个数组? 我试图熟悉C++模板。我需要编写一个连接2个数组的函数模板: template<typename T, int Size> class Array { public: void push(int i, const T& t) { _elem[i] = t; } private: T _elem[Size]; }; Array<int,3> a1; Array<int,4> a2; 模板 类数组 { 公众: void push(int i,const T&T){u elem[i]=T;} 私人: T_elem[大小]; };,c++,templates,C++,Templates,例如,我有两个阵列: template<typename T, int Size> class Array { public: void push(int i, const T& t) { _elem[i] = t; } private: T _elem[Size]; }; Array<int,3> a1; Array<int,4> a2; 数组a1; 阵列a2; 我不知道如何编写这个函数,它将返回 Array<int,7&

例如,我有两个阵列:

template<typename T, int Size>
class Array
{
public:
    void push(int i, const T& t) { _elem[i] = t; }
private:
    T _elem[Size];
};
Array<int,3> a1;
Array<int,4> a2;
数组a1;
阵列a2;
我不知道如何编写这个函数,它将返回

Array<int,7>. 
数组。

此函数的标题应该是什么样子?

您应该这样尝试:

template<typename T, int A, int B>
Array<T, A+B> concatenate(Array<T, A> first, Array<T, B> second) 
{
    Array<T, A+B> result;
    for (int idx = 0; idx < A; ++idx) {
        result.push(idx, first[idx]);
    }
    for (int idx = 0; idx < B; ++idx) {
        result.push(idx+A, second[idx]);
    }
    return result;
}
模板
数组连接(数组第一,数组第二)
{
数组结果;
对于(int-idx=0;idx
您可以这样做,作为类外的免费函数:

template <typename T, int SizeA, int SizeB>
Array<T, SizeA + SizeB> join(const Array<T, SizeA>& first,
                                const Array<T, SizeB>& second)
{
    /* ... */
}
模板
数组连接(常量数组和第一个,
常量数组(秒)
{
/* ... */
}

出于价值考虑,您可能应该使用
中的
std::size\t
而不是
int

我不确定那些
typename
的用途。@duselbaer,返回类型和两种输入类型是不同的,因此,您需要对函数进行模板化,以允许类型T和两种大小。类型名是告诉编译器这是从属类型所必需的。VisualStudio不会抱怨缺少类型名,但GCC会@juanchopanza:我就是这么做的-我不明白你的评论?@dusel:typename就是这么做的,当然,但你没有依赖类型。这类似于
Array::now_dependent