- Mastering the C++17 STL
- Arthur O'Dwyer
- 147字
- 2021-07-08 10:20:19
Concrete monomorphic functions
What distinguishes an abstract algorithm from a concrete function? This is best shown by example. Let's write a function to multiply each of the elements in an array by 2:
class array_of_ints {
int data[10] = {};
public:
int size() const { return 10; }
int& at(int i) { return data[i]; }
};
void double_each_element(array_of_ints& arr)
{
for (int i=0; i < arr.size(); ++i) {
arr.at(i) *= 2;
}
}
Our function double_each_element works only with objects of type array_of_int; passing in an object of a different type won't work (nor even compile). We refer to functions like this version of double_each_element as concrete or monomorphic functions. We call them concrete because they are insufficiently abstract for our purposes. Just imagine how painful it would be if the C++ standard library provided a concrete sort routine that worked only on one specific data type!
推薦閱讀
- 深度實踐OpenStack:基于Python的OpenStack組件開發
- 趣學Python算法100例
- Java Web基礎與實例教程
- Linux:Embedded Development
- 精通Python自動化編程
- CoffeeScript Application Development Cookbook
- Illustrator CS6設計與應用任務教程
- 硬件產品設計與開發:從原型到交付
- Simulation for Data Science with R
- Mastering XenApp?
- Oracle SOA Suite 12c Administrator's Guide
- AI輔助編程Python實戰:基于GitHub Copilot和ChatGPT
- 開源網絡地圖可視化:基于Leaflet的在線地圖開發
- 邊做邊學深度強化學習:PyTorch程序設計實踐
- Java 開發從入門到精通