array 容器是 C++ 11 标准中新增的序列容器,简单地理解,它就是在 C++ 普通数组的基础上,添加了一些成员函数和全局函数。

一、调用方法

  1. #include <array>
  2. using namespace std;

二、代码中的使用

  1. #include <iostream>
  2. #include <array>
  3. #include <string>
  4. using namespace std;
  5. int main()
  6. {
  7. array<int, 10> arr0{1, 2, 3}; //初始化前三个元素,剩余的元素初始化为0
  8. array<double, 5> arr1;//未初始化,随机值
  9. array<string, 19> arr2;
  10. int i = 0;
  11. /*访问元素*/
  12. for (i=0; i<arr0.size(); i++)
  13. {
  14. cout<<arr0[i]<<endl; //无边界检查
  15. cout<<arr0.at(i)<<endl; //边界检查 越界值时,程序会抛出 std::out_of_range 异常
  16. cout<<get<0>(arr0)<<endl; //get<>()该模板函数中,参数的实参必须是一个在编译时可以确定的常量表达式,所以它不能是一个循环变量
  17. cout<<*(arr0.data()+i)<<endl;//data()方法返回第0个元素数据的地址,主要用于array的数据拷贝
  18. }
  19. /*判断是否存在元素*/
  20. if(arr0.empty())
  21. {
  22. cout<<"The container has no elements.\n";
  23. }
  24. else
  25. {
  26. std::cout << "The container has "<< arr0.size()<<"elements.\n";
  27. }
  28. /*迭代器*/
  29. //begin()/end() 和 cbegin()/cend()
  30. auto first = arr0.begin(); //auto first = std::begin(values); 成员函数定义方式
  31. auto last = arr0.end(); //auto last = std::end (values); 成员函数定义方式
  32. i = 0;
  33. while(first != last)
  34. {
  35. *first = i;
  36. first++;
  37. i++;
  38. }
  39. //cbegin cend和begin end用法相同,但因为是const类型,故只能访问元素,不能修改
  40. auto cfirst = arr0.cbegin();
  41. auto clast = arr0.cend();
  42. while (cfirst != clast)
  43. {
  44. cout<<*cfirst<<" ";
  45. ++cfirst;
  46. }
  47. //rbegin()/rend() 和 crbegin()/crend() -- 反向迭代器
  48. auto rfirst = arr0.rbegin();
  49. auto rlast = arr0.rend();
  50. i = 0;
  51. while (rfirst != rlast)
  52. {
  53. *rfirst = i;
  54. ++rfirst;
  55. i++;
  56. }
  57. return 0;
  58. }