void f(vector<int>& v)
{
v[0]; //A
v.at(0); //B
}
上述A、B均是对Vector中的0位置的元素进行访问,其结果可能不一致。
当V为非空时,两者一致,当V为空时,则不一致了。
理由:A这种访问方式是vector<T>::operator,其不进行越界检查
B这种访问方式是vector<T>::at,其要求进行越界访问,抛出std::out_of_range异常。
但是上面的效率要高,因为其不进行越界访问。
{
v[0]; //A
v.at(0); //B
}
上述A、B均是对Vector中的0位置的元素进行访问,其结果可能不一致。
当V为非空时,两者一致,当V为空时,则不一致了。
理由:A这种访问方式是vector<T>::operator,其不进行越界检查
B这种访问方式是vector<T>::at,其要求进行越界访问,抛出std::out_of_range异常。
但是上面的效率要高,因为其不进行越界访问。