vector的成员函数 和简单的使用代码

c.assign(beg,end)

将[beg; end)区间中的数据赋值给c。

c.assign(n,elem)
将n个elem的拷贝赋值给c。

c.at(idx)
传回索引idx所指的数据,如果idx越界,抛出out_of_range。

c.back()
传回最后一个数据,不检查这个数据是否存在。

c.begin()
传回迭代器中的第一个数据。

c.capacity()
返回容器中数据个数。

c.clear()
移除容器中所有数据。

c.empty()
判断容器是否为空。

c.end()
指向迭代器中的最后一个数据地址。

c.erase(pos)

删除pos位置的数据,传回下一个数据的位置

c.erase(beg,end)

删除[beg,end)区间的数据,传回下一个数据的位置。

c.front()
传回地一个数据。

get_allocator
使用构造函数返回一个拷贝。

c.insert(pos,elem)

在pos位置插入一个elem拷贝,传回新数据位置。

c.insert(pos,n,elem)

在pos位置插入n个elem数据。无返回值。

c.insert(pos,beg,end)
在pos位置插入在[beg,end)区间的数据。无返回值。

c.max_size()
返回容器中最大数据的数量。

c.pop_back()
删除最后一个数据。

c.push_back(elem)
在尾部加入一个数据。

c.rbegin()
传回一个逆向队列的第一个数据。

c.rend()
传回一个逆向队列的最后一个数据的下一个位置。

c.resize(num)
重新指定队列的长度。

c.reserve()
保留适当的容量。

c.size()
返回容器中实际数据的个数。

c1.swap(c2)

swap(c1,c2)
将c1和c2元素互换。

同上操作。

vector<Elem> c

创建一个空的vector。

vector <Elem> c1(c2)

复制一个vector。

vector <Elem> c(n)

创建一个vector,含有n个数据,数据均已缺省构造产生。

vector <Elem> c(n, elem)

创建一个含有n个elem拷贝的vector。

vector <Elem> c(beg,end)

创建一个以[beg;end)区间的vector。

c.~ vector <Elem>()
销毁所有数据,释放内存。

#include <iostream>
#include <vector>
using namespace std;
typedef vector<int> INTVECTOR;//自定义类型INTVECTOR
//测试vector容器的功能
int main( )
{
     //vec1对象初始为空
     INTVECTOR vec1;  
     //vec2对象最初有10个值为6的元素
     INTVECTOR vec2(10,6);
     //vec3对象最初有3个值为6的元素,拷贝构造
     INTVECTOR vec3(vec2.begin(),vec2.begin()+3);
     //声明一个名为i的双向迭代器
     INTVECTOR::iterator i;
     //从前向后显示vec1中的数据
     cout<<"vec1.begin()--vec1.end():"<<endl;
    
     for (i =vec1.begin(); i !=vec1.end(); ++i)
         cout << *i << " ";
        
     cout << endl;
     //从前向后显示vec2中的数据
     cout<<"vec2.begin()--vec2.end():"<<endl;
    
     for (i =vec2.begin(); i !=vec2.end(); ++i)
         cout << *i << " ";
     cout << endl;
     //从前向后显示vec3中的数据
     cout<<"vec3.begin()--vec3.end():"<<endl;
     for (i =vec3.begin(); i !=vec3.end(); ++i)
         cout << *i << " ";
     cout << endl;
    
     //测试添加和插入成员函数,vector不支持从前插入
     vec1.push_back(2);//从后面添加一个成员
     vec1.push_back(4);
vec1.insert(vec1.begin()+1,5);//在vec1第一个的位置上插入成员5
//从vec1第一的位置开始插入vec3的所有成员
vec1.insert(vec1.begin()+1,vec3.begin(),vec3.end());
cout<<"after push() and insert() now the vec1 is:" <<endl;
     for (i =vec1.begin(); i !=vec1.end(); ++i)
         cout << *i << " ";
     cout << endl;
     //测试赋值成员函数
     vec2.assign(8,1);    // 重新给vec2赋值,8个成员的初始值都为1
     cout<<"vec2.assign(8,1):" <<endl;
     for (i =vec2.begin(); i !=vec2.end(); ++i)
         cout << *i << " ";
     cout << endl;
    
    
     //测试引用类函数
     cout<<"vec1.front()="<<vec1.front()<<endl;//vec1第零个成员
    
     cout<<"vec1.back()="<<vec1.back()<<endl;//vec1的最后一个成员
    
     cout<<"vec1.at(4)="<<vec1.at(4)<<endl;//vec1的第五个成员
    
     cout<<"vec1[4]="<<vec1[4]<<endl;
    
     //测试移出和删除
     vec1.pop_back();//将最后一个成员移出vec1
    
     vec1.erase(vec1.begin()+1,vec1.end()-2);//删除成员
    
     cout<<"vec1.pop_back() and vec1.erase():" <<endl;
    
     for (i =vec1.begin(); i !=vec1.end(); ++i)
         cout << *i << " ";
     cout << endl;
    
     //显示序列的状态信息
     cout<<"vec1.size(): "<<vec1.size()<<endl;//打印成员个数
     cout<<"vec1.empty(): "<<vec1.empty()<<endl;//清空
    /*vec1.begin()--vec1.end():

vec2.begin()--vec2.end():
6 6 6 6 6 6 6 6 6 6
vec3.begin()--vec3.end():
6 6 6
after push() and insert() now the vec1 is:
2 6 6 6 5 4
vec2.assign(8,1):
1 1 1 1 1 1 1 1
vec1.front()=2
vec1.back()=4
vec1.at(4)=5
vec1[4]=5
vec1.pop_back() and vec1.erase():
2 6 5
vec1.size(): 3
vec1.empty(): 0

*/
}

vector的两种遍历方法:

1、for ( int i = 0 ; i < vector.size() ; i++ ) 
  { 
  vector[i] 
  } 
2、vector::itertor iter; 
  for ( iter = vector.begin() ; iter != vector.end() ; iter++ ) 
  { 
  *iter 
  } 

第二种显得更专业,效率更高;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值