题目:
编写一个模板函数 fill,给数组a[start : end - 1]赋值 value。测试你的代码。
思路:
正常思路即可。当 start > end 时,进行交换,利用一下 new_swap() 函数。
代码:
1 #include <iostream> 2 using namespace std; 3 4 template <typename T> 5 void new_swap(T& a, T& b) { 6 T temp = a; 7 a = b; 8 b = temp; 9 } 10 11 template <typename T> 12 void fill_array (T* a, int start, int end, const T& value) { 13 if (start > end) { 14 new_swap(start, end); 15 } 16 while (start != end) { 17 a[start++] = value; 18 } 19 } 20 21 int main() { 22 int array[10] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 23 int start, end, value; 24 cout << "Enter start, end, value : "; 25 cin >> start >> end >> value; 26 27 fill_array(array, start, end, value); 28 29 for (auto x : array) { 30 cout << x << " "; 31 } 32 33 return 0; 34 }
这里将 value 声明为常量引用,因为不修改该值,并且传引用可以提高效率。