std::vector 的 .at() 函数到底有什么作用?
What does std::vector's .at() function really do?
这两种方法在向量中插入值有什么区别:
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大于或等于其大小)。这与不检查边界的成员运算符[]形成对比。
或:
http://www.cplusplus.com/reference/vector/vector/operator[]/
类似的成员函数vector::at与此运算符函数具有相同的行为,不同之处在于vector::at被绑定检查,并通过抛出out_of_range异常来发出请求位置是否超出范围的信号
稍微偏离主题,但您不应该使用"向量列表"术语来表示向量。一开始,我以为你会因为某种原因得到一个列表数据。
因此,给你一个真实世界的例子:当你确定索引在范围内时,你可以使用非绑定检查变体,因为这会导致代码稍微快一点。
根据C++标准:
类似的成员函数vector::at与此运算符[]函数具有相同的行为,不同之处在于vector::at已进行绑定检查,并通过抛出out_of_range异常来发出请求位置是否超出范围的信号。
相关文章:
- archive_read_support_filter_all() 有什么作用?
- 当我们为(;;) 写作时,它做了什么?for 循环中的双分号有什么作用?
- 这个递归函数有什么作用?运行时的复杂性是多少?
- DrawShadow 中的 Elevation 究竟有什么作用?
- 测试"stream >> char"有什么作用?
- "uFlags &= ~CHN_PANNING"命令有什么作用?
- GCC 的 -Wpsabi 选项究竟有什么作用?压制它意味着什么?
- int** a = new int*[n]();这个函数有什么作用?
- C++ 此函数调用之前的(void)有什么作用?
- i+=(i&-i) 有什么作用?它是便携式的吗?
- 这个size_t在 lambda 中有什么作用?C++代码
- 数组下标运算符 ([ ]) 对数组有什么作用?
- 结构之外的节点 * head 有什么作用?
- 重载括号运算符有什么作用?
- clang的"-Ofast"选项在实践中有什么作用,特别是对于与gcc的任何差异?
- std::make_unique_for_overwrite() 对 std::make_unique() 有什么作用?
- 运算符 delete[] 有什么作用?
- 下面的代码有什么作用?c++
- 这个陈述'p = I.ptr<uchar>(i);有什么作用?
- 这个嵌套的名称空间定义有什么作用