在使用STL容器时,访问容器的元素可以使用[ ]操作符直接访问指定的元素,也可以使用.at( )函数来访问元素值
例如:
string my_string = "0123456789"
//我们来遍历这个字符串
for (UINT u=0; u<(UINT)my_string.size(); u++)
{
if (0 == (u % 2))
cout<<my_string[u]<<endl; //偶数个使用[ ]遍历容器
else
cout<<my_string.at(u)<<endl; //奇数个使用at( )函数遍历容器
}
这时候我们屏幕上会依次输出0-9的数字,这说明at( )函数和[ ]都可以取出容器的元素来
但是,除此之外,at( )额外的还检查了下标是否合法
例如
//下面一行有可能会引起程序中断错误
cout<<my_string[10]<<endl;
//下面会抛出异常:throws: out_of_range
cout<<my_string.at(10)<<endl;
看看at( )的定义
const_reference at(size_type _Off) const
{ // subscript nonmutable sequence with checking
if (_Mysize <= _Off)
_String_base::_Xran(); // _Off off end
return (_Myptr()[_Off]);
}
结论:使用[ ]访问元素效率高,而使用at( )函数稳定性好