自然数映射与下标

在物理实现上,向量/数组是一段连续的内存空间。但向量/数组不仅仅是连续存储元素的集合,它亦是一个映射(mapping),可从{0,1,…n-1}映射到元素类型均为T的集合上,这种审视和处理的观点显然更高。
例:设学生成绩已存于vector< int>型向量scores中,其值范围从0到100,试统计以10为间隔各分数段学生数目。
解1:最容易想到的是写if/else if或者switch语句来解决问题。假设将各分数段的人数存入向量nums中,程序可写为:

vector Nums(10,0);
for(size_t i=0;i

显然这是个拙劣的程序思路,如果分数分布均匀的话,scores中平均每个成绩需要做大约5次判断。
解2:
考虑到向量在这里的功效,不妨直接利用下标之间建立映射

vector Nums(11,0);
for(size_t i=0;i

你可能感兴趣的:(数据结构)