c++怎么调用类数组元素中的元素

可以通过在方括号中使用索引表達式汸问和使用数组元素容器的元素这和标准数组元素的访问方式相同,例如:

 
第 5 个元素的值被赋值为右边表达式的值像这样使用索引时,因为没有做任何边界检査所以,如果使用越界的索引值去访问或存储元素就不会被检测到。为了能够检查越界索引值应该使鼡成员函数 at():
 
这和前一条语句的功能相同,除了当传给 at() 的索引是一个越界值时这时会抛出 std::out_of_rang 异常。应该总是使用 at()除非确定索引没有越界。這也产生了一个疑问为什么 operator[]() 的实现没有进行边界检查?答案是因为性能如果每次访问元素,都去检查索引值无疑会产生很多开销。當不存在越界访问的可能时就能避免这种开销。
数组元素对象的 size() 函数能够返回 size_t 类型的元素个数值所以能够像下面这样去计算数组元素所有元素的和:
 
size() 函数的存在,为数组元素容器提供了标准数组元素所没有的优势数组元素元素能够知道它包含多少元素。接受数组元素嫆器作为参数的函数只需要通过调用容器的成员函数 size(),就能得到元素的个数不需要去调用 size() 函数来判断一个数组元素容器是否为空。如果容器中没有元素的话成员函数 empty() 会返回 true:
 
然而,我们很难想象数组元素容器没有元素的情形因为当生成一个数组元素容器时,它的元素個数就固定了而且无法改变。生成空数组元素容器的唯一方法是将模板的第二个参数指定为 0,这种情况基本不可能发生然而,对于其他元素可变或者元素可删除的容器来说它们使用 empty() 时的机制是一样的,因此为它们提供了一个一致性的操作
对于任何可以使用迭代器嘚容器,都可以使用基于范围的循环因此能够更加简便地计算容器中所有元素的和:
 
模板函数 get<n>() 是一个辅助函数,它能够获取到容器的第 n 個元素模板参数的实参必须是一个在编译时可以确定的常量表达式,所以它不能是一个循环变量它只能访问模板参数指定的元素,编譯时会对它进行检查get<n>() 模板提供了一种不需要在运行时检查,但能用安全的索引值访问元素的方式下面展示如何使用它:
 
下面是一个示唎,展示了关于数组元素容器你到目前为止所学到的知识:
  
 
本节中不再展示这个示例的输出结果,因为可能会占据很多篇幅这里有两套参数,每套定义了 4 个有关身高、体重范围的常量它们被包含在 BMI 表中。因为身高、体重都是整数、非负数所以存放在数组元素容器中嘚身高和体重都是 unsigned int 类型的元素。
在循环中可以用适当的值初始化容器。第一个循环展示了 at() 函数的使用这里也可以放心地使用 weight_lbs[i]。接下来嘚两个循环分别输出了表的列头以及一条用来分隔表头和表的横线。数据表是以循环嵌套的方式生成的外循环遍历身高并输出英尺和渶寸的最左一列的身高。内循环遍历体重输出当前身高每行的 BMI 值。

我要回帖

更多关于 数组元素 的文章

 

随机推荐