官术网_书友最值得收藏!

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!

主站蜘蛛池模板: 田林县| 昔阳县| 磐石市| 都江堰市| 原平市| 台湾省| 西贡区| 宜春市| 霞浦县| 南乐县| 绥滨县| 肇州县| 余庆县| 新巴尔虎右旗| 新平| 拉萨市| 鄂尔多斯市| 宁阳县| 文昌市| 凭祥市| 黄石市| 尖扎县| 上犹县| 阿拉善左旗| 铜鼓县| 丰城市| 大冶市| 当阳市| 和龙市| 普宁市| 西平县| 桃园县| 全椒县| 古丈县| 察雅县| 思茅市| 哈巴河县| 绥阳县| 大悟县| 南昌市| 迁安市|