如何基于模板连接2个数组
How to concatenate 2 Arrays based on templates?
我正在努力熟悉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;
我不知道如何写这个函数,它会返回
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;
}
您可以这样做,作为类外的免费函数:
template <typename T, int SizeA, int SizeB>
Array<T, SizeA + SizeB> join(const Array<T, SizeA>& first,
const Array<T, SizeB>& second)
{
/* ... */
}
就其价值而言,您可能应该使用<cstddef>
中的std::size_t
,而不是int
。
相关文章:
- 如何在C++中比较两个char数组
- 在c++中获取两个大int,并将它们存储在数组中
- 如何以优化的方式同时迭代两个间距不相等的数组
- 运算符重载 (+),用于添加两个具有 C++ 的数组
- 如何从txt文件中读取多个不同长度的数组?
- C++,数组有多少个地址?
- 将字符串拆分为标记,并将标记拆分为两个单独的数组
- 为什么 2 个相同数组的元素彼此相等
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- 可以将两个相同类型的连续数组视为一个数组吗?
- 在数组中输入 n 个整数的列表,并以类似于钟摆来回移动的方式排列它们. 输入-1 3 2 5 4,输出5 3 1 2 4
- 如何创建一个所有行大小不同的 2D 数组,并且用户将指定每行将有多少个元素?
- C++递归来决定数组中的两个值
- 具有 2 个分量的数组的特征映射到 3 的向量
- C++ 2D 数组写入多个位置
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 给定一个大小为 N 的数组 S,检查是否可以将序列拆分为两个序列
- C++:在多个线程中访问同一数组/向量的不同单元格是否会产生数据竞赛?
- VTK 图像数据,访问数组中的 1 个图像
- 需要使用模板查找数组的第二个最小和最小值