assign函数 语法: void assign( input_iterator start, input_iterator end ); void assign( size_type num, const TYPE &val ); assign() 函数要么将区间[start, end)的元素赋到当前vector,或者赋num个值为val的元素到vector中.这个函数将会清除掉为vector赋值以前的内容.
at函数 语法: TYPE at( size_type loc ); at() 函数 返回当前Vector指定位置loc的元素的引用. at() 函数 比 [] 运算符更加安全, 因为它不会让你去访问到Vector内越界的元素. 例如, 考虑下面的代码: , ); ; i < ; i++ ) { cout << "Element " << i << " is " << v.at(i) << endl; } 取代试图访问内存里非法值的作法,at() 函数能够辨别出访问是否越界并在越界的时候抛出一个异常out_of_range.
back 函数 语法: TYPE back(),front(); front() 函数返回当前vector最首一个元素的引用 back() 函数返回当前vector最末一个元素的引用.
begin 函数 语法: iterator begin(); begin()函数返回一个指向当前vector起始元素的迭代器(似乎是指向元素的指针) .例如,下面这段使用了一个迭代器来显示出vector中的所有元素: vector<, ); vector<int>::iterator it; for( it = v1.begin(); it != v1.end(); it++ ) cout << *it << endl; end 函数 语法: iterator end(); end() 函数返回一个指向当前vector末尾元素的下一位置的迭代器.注意,如果你要访问末尾元素,需要先将此迭代器自减1.
clear 函数 语法: void clear(); clear()函数删除当前vector中的所有元素. empty 函数 语法:bool empty(); 如果当前vector没有容纳任何元素,则empty()函数返回true,否则返回false.
erase 函数 语法: iterator erase( iterator loc ); iterator erase( iterator start, iterator end ); erase函数要么删作指定位置loc的元素,要么删除区间[start, end)的所有元素. 返回值是指向删除的最后一个元素的下一位置的迭代器.
insert 函数 语法: iterator insert( iterator loc, const TYPE &val ); void insert( iterator loc, size_type num, const TYPE &val ); void insert( iterator loc, input_iterator start, input_iterator end ); insert() 函数有以下三种用法: 在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器, 在指定位置loc前插入num个值为val的元素 在指定位置loc前插入区间[start, end)的所有元素 .
size函数 语法: size_type size(); size() 函数返回当前vector所容纳元素的数目 swap 函数 语法: void swap( vector &from ); swap()函数交换当前vector与vector from的元素
reserve 函数 语法: void reserve( size_type size ); reserve()函数为当前vector预留至少共容纳size个元素的空间.(译注:实际空间可能大于size) resize 函数 语法: void resize( size_type size, TYPE val ); resize() 函数改变当前vector的大小为size,且对新创建的元素赋值val resize 与reserve的区别 reserve是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用容器内的元素,因此当加入新的元素时,需要用push_back()/insert()函数。 resize是改变容器的大小,并且创建对象,因此,调用这个函数之后,就可以引用容器内的对象了,因此当加入新的元素时,用operator[]操作符,或者用迭代器来引用元素对象。再者,两个函数的形式是有区别的,reserve函数之后一个参数,即需要预留的容器的空间;resize函数可以有两个参数,第一个参数是容器新的大小,第二个参数是要加入容器中的新元素,如果这个参数被省略,那么就调用元素对象的默认构造函数。 初次接触这两个接口也许会混淆,其实接口的命名就是对功能的绝佳描述,resize就是重新分配大小,reserve就是预留一定的空间。这两个接口即存在差别,也有共同点。 为实现resize的语义,resize接口做了两个保证: 一是保证区间[, new_size)范围内数据有效,如果下标index在此区间内,vector[indext]是合法的。 二是保证区间[, new_size)范围以外数据无效,如果下标index在区间外,vector[indext]是非法的。 reserve只是保证vector的空间大小(capacity)最少达到它的参数所指定的大小n。在区间[, n)范围内,如果下标是index,vector[index]这种访问有可能是合法的,也有可能是非法的,视具体情况而定。 resize和reserve接口的共同点是它们都保证了vector的空间大小(capacity)最少达到它的参数所指定的大小。
pop_back 语法: void pop_back(); pop_back()函数删除当前vector最末的一个元素 push_back 函数 语法: void push_back( const TYPE &val ); push_back()添加值为val的元素到当前vector末尾