c++ 之vector

1.vector对象的定义和初始化

vector<T> v1;                             vector保存类型为T的对象。默认构造函数,v1为空

vector<T> v2(v1);                        v2是v1的一个副本

vector<T> v3(n, i);                       v3包含n个值为i的元素

vector<T> v4(n);                          v4含有值初始化的元素的n个副本

vector<int> C(B.begin(),B.end()); //使用迭代器,能够取部分元素创建一个新的容器,因为其中使用指针实现该初始化函数。

2 vector 成员函数

vector::begin()  返回第一个元素的迭代器

const_iterator begin () const; //返回一个常量的迭代器,指向的值不可变。

vector::end() 

vector::rbegin() 反序的第一个元素,也就是正序最后一个元素

vector::rend() 反序的最后一个元素下一个位置,也相当于正序的第一个元素前一个位置

vector::resize() 又一次分配容器的元素个数,这个还能够改容器的容量,假设又一次分配的元素个数比原来的小,将截断序列,后面的部分丢弃,假设大于原来的个数,后面的值是c的值,默觉得0

vector::capacity() 返回vector的实际可以存储空间的大小,这个一般大于或等于vector元素个数,注意与size()函数的差别

vector::empty()当元素个数为0时返回true,否则为false,依据的是元素个数而不是容器的存储空间的大小

vector::reserve()分配空间的大小

      vector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size!
原因如下:
      reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加新的对象之前,不能引用容器内的元素。加入新的元素时,要调用push_back()/insert()函数。

      resize是改变容器的大小,且在创建对象,因此,调用这个函数之后,就可以引用容器内的对象了,因此当加入新的元素时,用operator[]操作符,或者用迭代器来引用元素对象。此时再调用push_back()函数,是加在这个新的空间后面的。

vector::operator[]  //重载了[]符号

vector::at()

vector::front() 返回第一个元素的值,与begin()函数有差别,begin()函数返回的是第一个元素的迭代器

vector::back() 相同,返回最后一个元素的值,注意与end()函数的差别

vector::push_back()在容器的最后一个位置插入元素x,假设size值大于capacity值,则将又一次分配空间

vector::pop_back() 删除最后一个元素

vector::insert()

   insert ( iterator position, const T& x );

   void insert ( iterator position, size_type n, const T& x );

template <class InputIterator>

void insert ( iterator position, InputIterator first, InputIterator last );

   插入新的元素,

第一个函数,在迭代器指定的位置前插入值为x的元素

第二个函数,在迭代器指定的位置前插入n个值为x的元素

第三个函数,在迭代器指定的位置前插入另外一个容器的一段序列迭代器first到last

若插入新的元素后总得元素个数大于capacity,则又一次分配空间

iterator erase ( iterator position );

iterator erase ( iterator first, iterator last );

如果是删除指定位置的元素时:
返回值是一个迭代器,指向删除元素下一个元素;如果是删除某范围内的元素时:返回值也表示一个迭代器,指向最后一个删除元素的下一个元素;

vector::swap()

   void swap ( vector<T,Allocator>& vec );

   交换这两个容器的内容,这涉及到存储空间的又一次分配


vector::clear()将容器里的内容清空,size值为0,可是存储空间没有改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值