你真的会vector吗?

边长数组,但是不是链表,刚开始误以为是链表,因为链表当时学的时候就是说的相比数组可以变长,熟练应用这个容器的每一个方法:

定义:

vector v(10);//可以指定大小或者不指定,无论全局还是不是全局,这个都是全部是零

或者v.resize(10)、v(100,0) ,相比数组[],改成了(),意思就是可以变通,可以变长

方法:

迭代器:begin() end() cbegin() cend() rbegin() rend() crbegin() crend()        

size()大小 和 resize()

capacity容量 和 reserve()有关系

max_size()能承受的最大数量

empty是否为空

shrink_to_fit减少使适合

front() back()第一个和最后一个元素的值

assign:有两个用法,一个是a.assin(v.begin(),v.end()) [,),第二个是a.assign(3,1),这两个都会改变原先里面的值

v.push_back() 和 pop_back()分别是向后面添加一个元素,向后面减少一个函数

v.insert这个函数有三个用法:

v.insert(v.begin() + i,x) 注意这个用法的返回是新插入x位置的迭代器

v.insert(v.begin(),n,x) 在这个位置之前插入n个x

v.insert(v.begin,v.begin + i,v.begin + j)指定位置插入区间的数

v.erase(v.begin() + i) 这个还有一个用法 erase(v.begin(),v.begin() + i)  

v.swap(a)这个真的好神奇啊,交换两个的值,连同SIZE会一同改变

v.clear()size回一起改变

v.emplace(v.begin,x)只能插入一个值,而且效率相比insert更好,更高

v.emplace_back()这个相比push_back更快,以后就用这个了

光说不练肯定是不行的,既然为我们提供这么方便的函数,我们就要没事多用,只有用才能用的更加熟练,透彻,不能整天拿着数组给自己真的会一样

你可能感兴趣的:(c++)