数组容器的操作

 1 #include<iostream>
 2 #include<array>
 3 #include<exception>
 4 
 5 
 6 void display(std::array<int, 10> &arr)
 7 {
 8     for (size_t i{}; i < arr.size(); ++i)  //size_t代表unsigned int, i{} 相当于 i = 0, {}也可以对容器内部所有元素赋上初值0
 9     {
10         std::cout << arr[i] << " ";
11     }
12     std::cout << std::endl;
13 }
14 void test01()
15 {
16     std::array<int, 10> volumn;
17     volumn.fill(5);  //容器内所有都填入同样的数值
18     display(volumn);
19 
20     try
21     {
22         volumn.at(10);  //会抛出异常,而采用[]的方式会直接访问越界导致程序崩溃。
23     }
24     catch (std::exception &e)
25     {
26         std::cout << "out of bound" << std::endl;
27     }
28 
29     if (volumn.empty())  //判断容器是否为空
30     {
31         std::cout << "the container has no elements" << std::endl;
32     }
33     else
34     {
35         std::cout << "the container has " << volumn.size() << " elements" << std::endl;
36     }
37     
38     /*C11的遍历方式,atuo可以自动识别出数据类型,必须通过引用才能修改值*/
39     int start = 1;
40     for (auto &value : volumn)
41     {
42         value = start;
43         ++start;
44     }
45 
46     /*使用迭代器*/
47     for (std::array<int, 10>::iterator vt = volumn.begin(); vt != volumn.end(); ++vt)
48     {
49         std::cout << *vt << " ";
50     }
51     std::cout << std::endl;
52 
53     /*使用反向迭代器*/
54     for (std::array<int, 10>::reverse_iterator vt = volumn.rbegin(); vt != volumn.rend(); ++vt)
55     {
56         std::cout << *vt << " ";
57     }
58     std::cout << std::endl;
59     for (auto vt = volumn.rbegin(); vt != volumn.rend(); ++vt)
60     {
61         std::cout << *vt << " ";
62     }
63     std::cout << std::endl;
64     /*将所有元素赋值为100*/
65     volumn.assign(100);
66     display(volumn);
67 
68 
69 }
70 
71 int main()
72 {
73 
74     test01();
75     system("pause");
76     return 0;
77 }

5 5 5 5 5 5 5 5 5 5
out of bound
the container has 10 elements
1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
100 100 100 100 100 100 100 100 100 100
请按任意键继续. . .

posted @ 2020-03-10 16:00  妇愁者  阅读(238)  评论(0编辑  收藏  举报