前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >STL-->vector

STL-->vector

作者头像
Max超
发布2019-01-21 14:44:13
6030
发布2019-01-21 14:44:13
举报
文章被收录于专栏:蓝桥杯历年省赛真题集

verctor vector类似于C语言中的数组,它维护一段连续的内存空间,具有固定的起始地址,因而能非常方便地进行随机存取,即 [] 操作符,但因为它的内存区域是连续的,所以在它中间插入或删除某个元素,需要复制并移动现有的元素。此外,当被插入的内存空间不够时,需要重新申请一块足够大的内存并进行内存拷贝。值得注意的是,vector每次扩容为原来的两倍,对小对象来说执行效率高,但如果遇到大对象,执行效率就低了。


  1. 构造器
代码语言:javascript
复制
  vector();
  vector( size_type num, const TYPE &val );
  vector( const vector &from );
  vector( input_iterator start, input_iterator end );
代码语言:javascript
复制
无参数 - 构造一个空的vector,             
数量(num)和值(val) - 构造一个初始放入num个值为val的元Vector 
vector(from) - 构造一个与vector from 相同的vector 
迭代器(start)和迭代器(end) - 构造一个初始值为[start,end)区间    元素的Vector(注:半开区间). 

例子

代码语言:javascript
复制
#include<vector>

using namespace std;

void print(vector<int> v)
{
    vector<int>::iterator it;
    for( it = v.begin(); it != v.end(); it++ )
    {
        cout << *it << ends;    
    }
    cout << endl;
}
int main()
{
    vector<int> v1(5,2);//2 2 2 2 2
    vector<int> v2(v1)//2 2 2 2 2
    vector<int> v3(v1.begin()+0,v1.begin()+4);// 2 2 2 2
    print(v1);
    print(v2);
    print(v3);
    return 0;
}
  1. 函数 assign
代码语言:javascript
复制
 void assign( input_iterator start, input_iterator end );
 void assign( size_type num, const TYPE &val );

assign() 函数要么将区间[start, end)的元素赋到当前vector,或者赋num个值为val的元素到vector中.这个函数将会清除掉为vector赋值以前的内容.

代码语言:javascript
复制
v1.assign(10,1);//10个1
print(v1);

at

代码语言:javascript
复制
at() 函数 返回当前Vector指定位置loc的元素的引用. at() 函数 比 [] 运算符更加安全, 因为它不会让你去访问到Vector内越界的元素. 例如, 考虑下面的代码:
for( int i = 0; i < 11; i++ ) {
  cout << "Element " << i << " is " << v1.at(i) << endl;
}
充分保证不会越界了

back back() 函数返回当前vector最末一个元素的引用

代码语言:javascript
复制
v1.back()//返回 2

begin begin()函数返回一个指向当前vector起始元素的迭代器.例如,下面这段使用了一个迭代器来显示出vector中的所有元素:

代码语言:javascript
复制
vector<int> v1( 5, 789 );
vector<int>::iterator it;
for( it = v1.begin(); it != v1.end(); it++ )
  cout << *it << endl;

clear clear()函数删除当前vector中的所有元素.

代码语言:javascript
复制
v1.clear();//v1中一个元素度没有了

empty 如果当前vector没有容纳任何元素,则empty()函数返回true,否则返回false.

end end() 函数返回一个指向当前vector末尾元素的下一位置的迭代器.注意,如果你要访问末尾元素,需要先将此迭代器自减1.

erase

代码语言:javascript
复制
iterator erase( iterator loc );
  iterator erase( iterator start, iterator end );

erase函数要么删作指定位置loc的元素,要么删除区间[start, end)的所有元素.返回值是指向删除的最后一个元素的下一位置的迭代器

front front()函数返回当前vector起始元素的引用

insert

代码语言:javascript
复制
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 );

在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器, 在指定位置loc前插入num个值为val的元素 在指定位置loc前插入区间[start, end)的所有元素 .

代码语言:javascript
复制
vector<char> alphaVector;
for( int i=0; i < 10; i++ )
  alphaVector.push_back( i + 65 );

//插入四个C到vector中
vector<char>::iterator theIterator = alphaVector.begin();
alphaVector.insert( theIterator, 4, 'C' );

//显示vector的内容
for( theIterator = alphaVector.begin(); theIterator != alphaVector.end(); theIterator++ )
  cout << *theIterator;

这段代码将显示: 

CCCCABCDEFGHIJ

pop_back ` pop_back()函数删除当前vector最末的一个元素

push_back push_back()添加值为val的元素到当前vector末尾

swap swap()函数交换当前vector与vector from的元素

size size() 函数返回当前vector所容纳元素的数目

resize resize() 函数改变当前vector的大小为size,且对新创建的元素赋值val

代码语言:javascript
复制
v1.resize(7,1);//2 2 2 2 2 1 1
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年02月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档