这两种方法在向量中插入值有什么区别:
vector<int> vectorlist (12);
vectorlist[12]=23;
相对:
vector<int> vectorlist (12);
vectorlist.at(12)=23;
这两种方法在向量中插入值有什么区别:
vector<int> vectorlist (12);
vectorlist[12]=23;
相对:
vector<int> vectorlist (12);
vectorlist.at(12)=23;
.at(...) 正在进行边界检查,同时 [] 运算符不进行边界检查,即超出范围。
从这里查看文档:
http://www.cplusplus.com/reference/vector/vector/at/
"该函数自动检查 n 是否在向量中有效元素的范围内,如果不在则抛出 out_of_range 异常(即,如果 n 大于或等于其大小)。这与成员 operator[] 形成对比,这不检查界限。”
或者:
http://www.cplusplus.com/reference/vector/vector/operator[]/
“一个类似的成员函数 vector::at 具有与此运算符函数相同的行为,除了 vector::at 进行了边界检查,并通过抛出 out_of_range 异常来指示请求的位置是否超出范围。”
有点离题,但你不应该使用“vectorlist”术语来表示向量。起初,我以为您出于某种原因会有一个列表数据。
所以,给你一个真实的例子:当你确定索引在范围内时,你可以使用非边界检查变体,因为这会导致代码稍微快一点。
根据 C++ 标准:
一个类似的成员函数 vector::at 与此 operator [] 函数具有相同的行为,除了 vector::at 是边界检查的,并且如果请求的位置超出范围,则通过抛出 out_of_range 异常来发出信号。