C++ STL中使用数组语法访问vector中的元素

C++ STL中使用数组语法访问vector中的元素

可使用下列方法访问 vector 的元素:使用下标运算符( [])以数组语法方式访问;使用成员函数at( );使用迭代器。
程序清单 17.1 演示了如何创建一个包含 10 个元素的 vector 实例:

std::vector <int> tenElements (10);

可使用类似于数组的语法访问并设置各个元素:

tenElements[3] = 2011; // set 4th element

程序清单 17.4 演示了如何使用下标运算符( [])访问元素

0: #include <iostream>
1: #include <vector>
2:
3: int main ()
4: {
5: using namespace std;
6: vector <int> integers{ 50, 1, 987, 1001 };
7:
8: for (size_t index = 0; index < integers.size (); ++index)
9: {
10: cout << "Element[" << index << "] = " ;
11: cout << integers[index] << endl;
12: }
13:
14: integers[2] = 2011; // change value of 3rd element
15: cout << "After replacement: " << endl;
16: cout << "Element[2] = " << integers[2] << endl;
17:
18: return 0;
19: }

输出:

Element[0] = 50
Element[1] = 1
Element[2] = 987
Element[3] = 1001
After replacement:
Element[2] = 2011

分析:
在第 11、 14 和 16 行,像使用静态数组那样,使用下标运算符( [])访问并设置了 vector 的元素。
下标运算符接受一个从零开始的元素索引,与静态数组一样。注意到第 15 行的 for 循环将索引与
vector::size( )进行比较,确保它跨越 vector 的边界。

使用[]访问 vector 的元素时,面临的风险与访问数组元素相同,即不能超出容器的边界。
使用下标运算符( [])访问 vector 的元素时,如果指定的位置超出了边界,结果将是不
确定的(什么情况都可能发生,很可能是访问违规)。
更安全的方法是使用成员函数 at( ):

// gets element at position 2
cout < < integers.at (2);
// the vector::at() version of the code above in
Listing 17.4, line 11:
cout < < integers.at(index);

at( )函数在运行阶段检查容器的大小,如果索引超出边界(无论如何都不能这样做),将引发异常。
下标运算符( [])只有在保证边界完整性的情况下才是安全的,如前一个例子所示。

对C++编程技术感兴趣的朋友请点击这里:零声学院C/C++服务器课程

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值