访问array容器中的单个元素

首先,可以通过容器名[]的方式直接访问和使用容器中的元素,这和 C++ 标准数组访问元素的方式相同,例如:

  1. values[4] = values[3] + 2.O*values[1];

需要注意的是,使用如上这样方式,由于没有做任何边界检查,所以即便使用越界的索引值去访问或存储元素,也不会被检测到。
为了能够有效地避免越界访问的情况,可以使用 array 容器提供的 at() 成员函数,例如 :

  1. values.at (4) = values.at(3) + 2.O*values.at(1);

这行代码和前一行语句实现的功能相同,其次当传给 at() 的索引是一个越界值时,程序会抛出 std::out_of_range 异常。
array 容器提供了 data() 成员函数,通过调用该函数可以得到指向容器首个元素的指针。通过该指针,我们可以获得容器中的各个元素

  1. #include <iostream>
  2. #include <array>
  3. using namespace std;
  4. int main()
  5. {
  6. array<int, 5> words{1,2,3,4,5};
  7. cout << *( words.data()+1);
  8. return 0;
  9. }

访问array容器的多个元素

array 容器提供的 size() 函数能够返回容器中元素的个数(函数返回值为 size_t 类型),所以能够像下面这样去逐个提取容器中的元素,并计算它们的和:

  1. double total = 0.0;
  2. for (size_t i = 0; i < values.size(); ++i){
  3. total += values[i];
  4. }

上面的方法不一定好,我们可以充分使用迭代器

  1. double total {};
  2. for (auot&& value: values){
  3. total += value;
  4. }

fill() 函数将所有元素都设为传入的实参值。