vector的使用

迈不过友情╰ 2022-06-08 13:44 281阅读 0赞
  1. #include<iostream>
  2. #include <vector>
  3. using namespace std;
  4. int main(){
  5. unsigned int i;
  6. vector<int> first;
  7. vector<int> second(4,100);
  8. vector<int> third(second.begin(),second.end());
  9. vector<int> forth{
  10. 0,1,2,3,4,5,6,7,8,9,0};
  11. int mytins[]={
  12. 16,2,22,7,11};
  13. vector<int> fifth(mytins,mytins+sizeof(mytins)/sizeof(int));
  14. cout << "the fifth contains ";
  15. for(auto h:fifth)
  16. cout << h << " ";
  17. cout << endl;
  18. //assign()函数一共包含两个版本第一个支持重复数字的引用版本,第二个支持迭代器版本;
  19. first.assign(7,100);
  20. for(auto h:first)
  21. cout << h << " ";
  22. cout << endl;
  23. first.assign(10,1);
  24. for(auto h:first)
  25. cout << h << " ";
  26. cout << endl;
  27. first.assign(second.begin(),second.end());
  28. for(auto h:first)
  29. cout << h << " ";
  30. cout << endl;
  31. first.assign(second.begin(),second.end());
  32. //at用来作为下标访问
  33. for(size_t i=0;i<forth.size();++i)
  34. cout << forth.at(i) << " ";
  35. cout << endl;
  36. //.back()用于返回当前vector的最后一个元素;
  37. cout << forth.back() << endl;
  38. //.begin() .end()两个迭代器,用于访问vector里面的元素
  39. for(auto It=forth.begin();It!=forth.end();++It)
  40. cout << *It << " ";
  41. cout << endl;
  42. //auto 可以使用vector<int>::iterator It 进行代替;
  43. //capacity() vector里面已经分配的空间的大小,用来衡量里面可以访问多少元素;
  44. cout << "first.capacity(): " << first.capacity() <<"\tfirst.size(): " << (int)first.size() << endl;
  45. cout << "second.capacity(): " << second.capacity() <<"\tsecond.size(): " << second.size() << endl;
  46. cout << "third.capacity(): " << third.capacity() <<"\tthird.size(): " << third.size() << endl;
  47. cout << "forth.capacity(): " << forth.capacity() <<"\tforth.size(): " << forth.size() << endl;
  48. cout << "fifth.capacity(): " << fifth.capacity() <<"\tfifth.size(): " << fifth.size() << endl;
  49. //clear 调用析构函数,将所有元素清0,并且将size置为0,但是分配的空间大小是没有改变的;
  50. first.clear();
  51. cout << first.capacity() << endl;
  52. cout << first.size() << endl;
  53. //.erase()擦出某些函数,一共有两个版本,其中一个是传递位置,另一个是传递范围,两者都必须是迭代器
  54. for(size_t i=0;i<20;++i)
  55. first.push_back(i);
  56. first.erase(first.begin()+2);
  57. for(auto h:first)
  58. cout << h << " ";
  59. cout << endl;
  60. first.erase(first.begin()+2,first.begin()+7);
  61. for(auto h:first)
  62. cout << h << " ";
  63. cout << endl;
  64. //.front()用于返回当前容器的第一个元素;
  65. cout << "first.front(): " << first.front() << endl;
  66. //.get_allocator()用于获得分配容器的适配器,可以使用这个适配器用来获得需要的空间;
  67. int *p;
  68. vector<int> myvector;
  69. //使用指针获得5个元素的分配地址;
  70. p=myvector.get_allocator().allocate(5);
  71. for(auto i=0;i<5;++i)
  72. p[i]=i;
  73. for(auto i=0;i<5;++i)
  74. cout << p[i] << " ";
  75. cout << endl;
  76. //Insert 用于在当前容器里面插入元素,支持三种形式的插入:(位置,元素),(位置,元素数量,元素),(位置,迭代器开始,迭代器结束);
  77. forth.insert(forth.begin()+5,10);
  78. forth.insert(forth.begin()+3,4,5);
  79. forth.insert(forth.begin()+7,first.begin(),first.end());
  80. for(auto h:forth)
  81. cout << h << " ";
  82. cout << endl;
  83. //=用于完成元素的拷贝,并且丢弃原来数组里面的元素
  84. vector<int> vfirst;
  85. first=vfirst;
  86. for(auto h:first)
  87. cout << h << " ";
  88. cout << endl;
  89. for(size_t i=0;i<forth.size();++i)
  90. forth[i]=i*2;
  91. for(size_t i=0;i<forth.size();++i)
  92. cout << forth[i] << " ";
  93. cout << endl;
  94. //.pop.back()用于逐个的删除容器里面的元素;
  95. while(second.empty()){
  96. second.pop_back();
  97. }
  98. //.rebegin() rend()用于从后往前进行迭代器的遍历;
  99. for(auto It=forth.rbegin();It!=forth.rend();++It)
  100. cout << *It << " ";
  101. cout << endl;
  102. //用来主动要求capacity的大小,函数原型void reverse(size_t n);
  103. vector<int> newvector;
  104. newvector.resize(20);
  105. cout << "newvector.capacity: " << newvector.capacity() << endl;
  106. //.resize():一共有三种情况,如果设定的n的值小于当前的数字元素实际大小,那么超过的部分就会被销毁;
  107. //如果n大于当前实际元素的大小,那么容器里面会被填充其他的元素;
  108. //如果n大于capacity的大小,那么容器会自动调整capacity的大小;
  109. vector<int> mynewvector;
  110. for(size_t i=0;i<10;i++)
  111. mynewvector.push_back(i);
  112. mynewvector.resize(5);
  113. mynewvector.resize(8,100);
  114. for(auto my:mynewvector)
  115. cout << my << " ";
  116. cout << endl;
  117. //.shrink_to_fit:请求减少capacity适应size的大小;
  118. //这个过程使可以自动进行优化的,有可能进行空间的重新分配,但是不会原始的数据;
  119. vector<int> mynewvector1(100);
  120. cout << "capacity of mynewvector1: " << mynewvector1.capacity() << endl;
  121. mynewvector1.resize(10);
  122. cout << "capacity of mynewvector1: " << mynewvector1.capacity() << endl;
  123. myvector.shrink_to_fit();
  124. cout << "capacity of mynewvector1: " << mynewvector1.capacity() << endl;
  125. //size:用来衡量容器里面实际元素的数量
  126. cout << "myvector.size(): " << myvector.size() << endl;
  127. //.swap()用来交换两个容器里面的元素
  128. second.swap(fifth);
  129. cout << "second contains: " ;
  130. for(auto nh:second)
  131. cout << nh << " ";
  132. cout << endl;
  133. cout << "fifth contains: ";
  134. for(auto hh:fifth)
  135. cout << hh << " ";
  136. cout << endl;
  137. }

发表评论

表情:
评论列表 (有 0 条评论,281人围观)

还没有评论,来说两句吧...

相关阅读

    相关 vector使用示例

    vector是一个容器,可以看做是一个大小可变化的数组,所以其特性有: 1)大小可变; 2)容器内的数据成员只允许是一种; 3)由于vector提供的接口的特性,他可以当