设为首页收藏本站

SKY外语、计算机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5178|回复: 0
打印 上一主题 下一主题

[C] vector容器的所有成员函数用法(STL)

[复制链接]

7

主题

0

好友

174

积分

注册会员

Rank: 2

生肖
星座
天秤座
性别
跳转到指定楼层
楼主
发表于 2012-6-11 10:21:57 |只看该作者 |倒序浏览
本帖最后由 sky_yx 于 2015-12-30 14:18 编辑

vector 动态数组容器, 你会用吗? 你知道它的所有用法吗.
在下面:
  1. //动态数组容器
  2. #include <vector>
  3. using namespace std;
  4. int _tmain(int argc, _TCHAR* argv[])
  5. {
  6.         vector<int> c;
  7.         vector<int> c2;       
  8.         //vector<int>::reference i; 即为 int i;
  9.         int i;
  10.         //int ai[] = {0,1,2,3,4,5};
  11.         //vector<int> c3(ai,ai+sizeof(ai));//参数一:首地址;参数二:最后元素的后一个字节
  12.         //添加元素
  13.         c.push_back(1);                //添加到结尾
  14.         c.push_back(2);
  15.         c.push_back(3);
  16.         //赋数据值
  17.         c2.assign(c.begin(),c.end() - 1);//将c.begin(),c.end() - 1区间中的数据赋值给c2
  18.         c.assign(3,100);                                        //将3个100赋值给c
  19.         //遍历元素
  20.         //c.begin()        传回迭代器中的第一个数据地址
  21.         //c.end()        指向迭代器中末端元素的下一个,指向一个不存在元素
  22.         for(vector<int>::iterator p = c.begin();p != c.end() ;p++)
  23.         {
  24.                 printf("%d\n",*p);
  25.         }
  26.         //取出索引位置的元素
  27.         i = c.at(1);
  28.         printf("%d\n",i);
  29.         //传回最后一个数据,不检查这个数据是否存在
  30.         i = c.back();
  31.         printf("%d\n",i);
  32.         //传回第一个数据
  33.         i = c.front();
  34.         //返回当前容量
  35.         int iCount = c.capacity();
  36.         printf("%d\n",iCount);
  37.         //移除容器中所有数据
  38.         c.clear();
  39.         //判断容器是否为空
  40.         bool bIsEmpty = c.empty();
  41.         //删除指定位置的数据,传回下一个数据的位置
  42.         c.erase(c.begin() + 1);
  43.         //删除指定区间的数据,传回下一个数据的位置
  44.         c.erase(c.begin() + 1,c.end() - 2);
  45.         //使用构造函数返回一个拷贝
  46.         vector<int> c3(c.get_allocator());
  47.         //在指定位置插入一个数据拷贝,传回新数据位置
  48.         c.insert(c.begin() + 1,1234);
  49.         //在指定位置插入指定数个数据,无返回值
  50.         c.insert(c.begin() + 2,5,1234);
  51.         //在指定位置插入指定范围数据.无返回值
  52.         c.insert(c.begin() + 3,c2.begin(),c2.end());
  53.         //返回容器中最大数据的数量
  54.         iCount = c.max_size();
  55.         //删除最后一个数据
  56.         c.pop_back();
  57.         //在尾部加入一个数据
  58.         c.push_back(123);
  59.         //重新指定队列的长度
  60.         c.resize(3);
  61.         //返回容器中实际数据的个数
  62.         c.size();
  63.         //将两个容器的元素互换
  64.         c.swap(c2);
  65.         return 0;
  66. }
  67. /*
  68.   c.assign(beg,end) c.assign(n,elem) 将(beg; end)区间中的数据赋值给c。将n个elem的拷贝赋值给c。
  69.   c.at(idx) 传回索引idx所指的数据,如果idx越界,抛出out_of_range。   
  70.         c.back() 传回最后一个数据,不检查这个数据是否存在。
  71.         c.begin() 传回迭代器中的第一个数据地址。   
  72.         c.capacity() 返回容器中数据个数。   
  73.         c.clear() 移除容器中所有数据。   
  74.         c.empty() 判断容器是否为空。   
  75.         c.end() //指向迭代器中末端元素的下一个,指向一个不存在元素。   
  76.         c.erase(pos) // 删除pos位置的数据,传回下一个数据的位置。   
  77.         c.erase(beg,end) 删除[beg,end)区间的数据,传回下一个数据的位置。   
  78.         c.front() 传回第一个数据。   get_allocator 使用构造函数返回一个拷贝。   
  79.         c.insert(pos,elem) //在pos位置插入一个elem拷贝,传回新数据位置 
  80.         c.insert(pos,n,elem) //在pos位置插入n个elem数据,无返回值    
  81.         c.insert(pos,beg,end) //在pos位置插入在[beg,end)区间的数据。无返回值    
  82.         c.max_size() 返回容器中最大数据的数量。    
  83.         c.pop_back() 删除最后一个数据。    
  84.         c.push_back(elem) 在尾部加入一个数据。    
  85.         c.rbegin() 传回一个逆向队列的第一个数据。    
  86.         c.rend() 传回一个逆向队列的最后一个数据的下一个位置。    
  87.         c.resize(num) 重新指定队列的长度。    
  88.         c.reserve() 保留适当的容量。    
  89.         c.size() 返回容器中实际数据的个数。    
  90.         c1.swap(c2)//将c1和c2元素互换
  91. */
复制代码


分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享淘帖0 收藏收藏0 评分评分
+q67824885
您需要登录后才可以回帖 登录 | 立即注册


手机版|SKY外语计算机学习 ( 粤ICP备12031577 )    

GMT+8, 2024-12-22 17:29 , Processed in 0.106731 second(s), 26 queries .

回顶部