1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
#include <iostream>
#include <array>
#include <string>
// 通用的数组打印函数
template<typename T, size_t N>
void PrintArray(const std::array<T, N>& arr, const std::string& name = "Array")
{
std::cout << name << " [size=" << N << "]: ";
for (const auto& element : arr)
{
std::cout << element << " ";
}
std::cout << std::endl;
}
// 数组操作模板
template<typename T, size_t N>
std::array<T, N> MultiplyArray(const std::array<T, N>& arr, T multiplier)
{
std::array<T, N> result;
for (size_t i = 0; i < N; ++i)
{
result[i] = arr[i] * multiplier;
}
return result;
}
// 数组求和模板
template<typename T, size_t N>
T SumArray(const std::array<T, N>& arr)
{
T sum = T{}; // 零初始化
for (const auto& element : arr)
{
sum += element;
}
return sum;
}
// 数组比较模板
template<typename T, size_t N>
bool ArraysEqual(const std::array<T, N>& arr1, const std::array<T, N>& arr2)
{
for (size_t i = 0; i < N; ++i)
{
if (arr1[i] != arr2[i])
return false;
}
return true;
}
void TemplateArrayOperations()
{
std::cout << "=== Template Array Operations ===" << std::endl;
// 整数数组
std::array<int, 5> intArray = {1, 2, 3, 4, 5};
PrintArray(intArray, "Integer Array");
auto doubledInts = MultiplyArray(intArray, 2);
PrintArray(doubledInts, "Doubled Integers");
int intSum = SumArray(intArray);
std::cout << "Sum of integers: " << intSum << std::endl;
// 浮点数组
std::array<double, 4> doubleArray = {1.1, 2.2, 3.3, 4.4};
PrintArray(doubleArray, "Double Array");
auto scaledDoubles = MultiplyArray(doubleArray, 1.5);
PrintArray(scaledDoubles, "Scaled Doubles");
double doubleSum = SumArray(doubleArray);
std::cout << "Sum of doubles: " << doubleSum << std::endl;
// 字符串数组
std::array<std::string, 3> stringArray = {"Hello", "World", "C++"};
PrintArray(stringArray, "String Array");
// 数组比较
std::array<int, 3> arr1 = {1, 2, 3};
std::array<int, 3> arr2 = {1, 2, 3};
std::array<int, 3> arr3 = {1, 2, 4};
std::cout << "arr1 == arr2: " << (ArraysEqual(arr1, arr2) ? "true" : "false") << std::endl;
std::cout << "arr1 == arr3: " << (ArraysEqual(arr1, arr3) ? "true" : "false") << std::endl;
}
int main()
{
TemplateArrayOperations();
return 0;
}
|