通常来说,假设v是一个vector对象,则v.at(n)和v[n]是一样的,只不过前者会检查是否越界(因此花费的时间稍多),而后者不会(后者越界会导致未定义行为)。
具体而言,vector<T>(T是某种类型)的at函数接受一个vector<T>::size_type类型的参数n(一种无符号整型类型),返回容器位置为n的元素的引用(注意第一个位置为0)。函数的时间复杂度为O(1),即常数时间。如果n越界,会抛出out_of_range异常。
// vector::at
#include <iostream>
#include <vector>
int main ()
{
  std::vector<int> myvector (10);   // 10 zero-initialized ints
  // assign some values:
  for (unsigned i=0; i<myvector.size(); i++)
    myvector.at(i)=i;
  std::cout << "myvector contains:";
  for (unsigned i=0; i<myvector.size(); i++)
    std::cout << ' ' << myvector.at(i);
  std::cout << '\n';
  return 0;
}