结论:使用at时应使用try catch包裹住;而使用operator[]时一定要先检查一下是否越界。 voiddoTest01(){try{std::vector<std::string>vec;string&i=vec[2];cout<<i.size()<<endl;}catch(constexception&e){cerr<<e.what()<<endl;}catch(...){cerr<<"error"<<endl;}};voiddoTest02(){try{std::vec...
1、 vector::at() 2、 vector::operator[]operator[]主要是为了与C语言进行兼容。它可以像C语言数组一样操作。但at()是我们的首选,因为at()进行了边界检查,如果访问超过了vector的范围,将抛出一个例外。由于operator[]容易造成一些错误,所有我们很少用它,下面进行验证一下: 分析下面的代码: vector<int>v; v....
vec4.at(0) = str1;//ooo,xyz,abcvec4.front() ="front";//front,xyz,abcvec4.back() ="back";//front,xyz,backstd::vector<int>vec5(5,6);//666666vec5.assign(3,4);//444 以3个4替换vec5原来的所有元素vec5.assign(v1.begin() +1, v1.end());//234 用v1第二个元素到最后一个...
std::vector<T,Allocator>::get_allocator std::vector<T,Allocator>::operator[] std::vector<T,Allocator>::front std::vector<T,Allocator>::at std::vector<T,Allocator>::pop_back std::vector<T,Allocator>::end, std::vector<T,Allocator>::cend std::vector<T,Allocator>::vector std::vector...
只有随机存取迭代器才能使用添加功能,而std::advance可以与各种类型的迭代器一起使用。只要你处理的是指向向量的迭代器,这没有什么实际的区别,但是std::advance让代码更加通用(例如,你可以用list替换vector,那部分代码仍将起作用)。 对于那些关心的人,标准描述了advance和distance如下(§24.3.4/1): ...
Unlike std::map::operator[], this operator never inserts a new element into the container. Accessing a nonexistent element through this operator is undefined behavior. ExampleThe following code uses operator[] to read from and write to a std::vector<int>: Run this code #include <vector> #...
对vector中的数据进行存取操作 函数原型:at(int index);返回索引index指向的数据 operator[];和普通数组...
不同于 std::map::operator[] ,此运算符决不插入新元素到容器。通过此运算符访问不存在的元素是未定义行为。 示例下列代码使用 operator[] 读取并写入 std::vector<int>: 运行此代码 #include <vector> #include <iostream> int main() { std::vector<int> numbers {2, 4, 6, 8}; std::cout << "...
at() is slightly slower than operator[] because of the boundary check. If an out-of-bounds index is provided, it throws an std::out_of_range exception. front() and back() These member functions provide direct access to the first and last elements of the vector, respectively. ...
bool operator!=( const std::vector<T,Alloc>& lhs, const std::vector<T,Alloc>& rhs ); (2) (C++20 前) template< class T, class Alloc > bool operator<( const std::vector<T,Alloc>& lhs, const std::vector<T,Alloc>& rhs ); (3) (C++20 前) ...