• vector类的常用接口说明


    目录

    一、(constructor)构造函数声明

    二、vector的迭代器

    三、vector的增删改查

    四、insert和erase,以及查找find(find不属于vector,是stl提供的算法)

    五、三种遍历方式

    六、源代码


    vector是可变大小数组的序列容器

    一、(constructor)构造函数声明

     

    1. //构造
    2. int TestVector1()
    3. {
    4. //无参构造
    5. vector<int> v1;
    6. //构造并初始化n个val
    7. vector<int> v2(4, 100);
    8. //使用迭代器进行初始化构造
    9. vector<int> v3(v2.begin(), v2.end());
    10. //拷贝构造
    11. vector<int> v4(v3);
    12. return 0;
    13. }

    二、vector的迭代器

    1. //迭代器
    2. void PrintVector(const vector<int>& v)
    3. {
    4. //遍历打印
    5. vector<int>::const_iterator it = v.begin();
    6. while (it != v.end())
    7. {
    8. cout << *it << " ";
    9. ++it;
    10. }
    11. cout << endl;
    12. }
    13. void TestVector2()
    14. {
    15. vector<int> v;
    16. v.push_back(1);
    17. v.push_back(2);
    18. v.push_back(3);
    19. v.push_back(4);
    20. //遍历打印
    21. vector<int>::iterator it = v.begin();
    22. while (it != v.end())
    23. {
    24. cout << *it << " ";
    25. ++it;
    26. }
    27. cout << endl;
    28. //修改
    29. it = v.begin();
    30. while (it != v.end())
    31. {
    32. *it *= 2;
    33. ++it;
    34. }
    35. //使用反向迭代器进行遍历再打印
    36. vector<int>::reverse_iterator rit = v.rbegin();
    37. while (rit != v.rend())
    38. {
    39. cout << *rit << " ";
    40. ++rit;
    41. }
    42. cout << endl;
    43. PrintVector(v);
    44. }

    三、vector的增删改查

    1. void TestVector4()
    2. {
    3. vector<int> v;
    4. v.push_back(1);
    5. v.push_back(2);
    6. v.push_back(3);
    7. v.push_back(4);
    8. auto it = v.begin();
    9. while (it != v.end())
    10. {
    11. cout << *it << " ";
    12. ++it;
    13. }
    14. cout << endl;
    15. v.pop_back();
    16. v.pop_back();
    17. it = v.begin();
    18. while (it != v.end())
    19. {
    20. cout << *it << " ";
    21. ++it;
    22. }
    23. cout << endl;
    24. }

    四、insert和erase,以及查找find(find不属于vector,是stl提供的算法)

    1. void TestVector5()
    2. {
    3. vector<int> v{ 1,2,3,4 };
    4. auto pos = find(v.begin(), v.end(), 3);
    5. if (pos != v.end())
    6. {
    7. v.insert(pos, 30);
    8. }
    9. vector<int>::iterator it = v.begin();
    10. while (it != v.end())
    11. {
    12. cout << *it << " ";
    13. ++it;
    14. }
    15. cout << endl;
    16. pos = find(v.begin(), v.end(), 3);
    17. // 删除pos位置的数据
    18. v.erase(pos);
    19. it = v.begin();
    20. while (it != v.end()) {
    21. cout << *it << " ";
    22. ++it;
    23. }
    24. cout << endl;
    25. }

    五、三种遍历方式

    1. void TestVector6()
    2. {
    3. vector<int> v{ 1,2,3,4 };
    4. //通过[]读写第0个位置
    5. v[0] = 10;
    6. cout << v[0] << endl;
    7. //使用for+[]方式遍历
    8. for (size_t i = 0; i < v.size(); ++i)
    9. {
    10. cout << v[i] << " ";
    11. }
    12. cout << endl;
    13. vector<int> swapv;
    14. swapv.swap(v);
    15. //使用迭代器遍历
    16. auto it = swapv.begin();
    17. while (it != swapv.end())
    18. {
    19. cout << *it << " ";
    20. ++it;
    21. }
    22. // 3. 使用范围for遍历
    23. for (auto x : v)
    24. cout << x << " ";
    25. cout << endl;
    26. }

    六、源代码

    1. #define _CRT_SECURE_NO_WARNINGS
    2. #include<iostream>
    3. using namespace std;
    4. #include<vector>
    5. //构造
    6. int TestVector1()
    7. {
    8. //无参构造
    9. vector<int> v1;
    10. //构造并初始化n个val
    11. vector<int> v2(4, 100);
    12. //使用迭代器进行初始化构造
    13. vector<int> v3(v2.begin(), v2.end());
    14. //拷贝构造
    15. vector<int> v4(v3);
    16. return 0;
    17. }
    18. //迭代器
    19. void PrintVector(const vector<int>& v)
    20. {
    21. //遍历打印
    22. vector<int>::const_iterator it = v.begin();
    23. while (it != v.end())
    24. {
    25. cout << *it << " ";
    26. ++it;
    27. }
    28. cout << endl;
    29. }
    30. void TestVector2()
    31. {
    32. vector<int> v;
    33. v.push_back(1);
    34. v.push_back(2);
    35. v.push_back(3);
    36. v.push_back(4);
    37. //遍历打印
    38. vector<int>::iterator it = v.begin();
    39. while (it != v.end())
    40. {
    41. cout << *it << " ";
    42. ++it;
    43. }
    44. cout << endl;
    45. //修改
    46. it = v.begin();
    47. while (it != v.end())
    48. {
    49. *it *= 2;
    50. ++it;
    51. }
    52. //使用反向迭代器进行遍历再打印
    53. vector<int>::reverse_iterator rit = v.rbegin();
    54. while (rit != v.rend())
    55. {
    56. cout << *rit << " ";
    57. ++rit;
    58. }
    59. cout << endl;
    60. PrintVector(v);
    61. }
    62. //尾插和尾删
    63. void TestVector4()
    64. {
    65. vector<int> v;
    66. v.push_back(1);
    67. v.push_back(2);
    68. v.push_back(3);
    69. v.push_back(4);
    70. auto it = v.begin();
    71. while (it != v.end())
    72. {
    73. cout << *it << " ";
    74. ++it;
    75. }
    76. cout << endl;
    77. v.pop_back();
    78. v.pop_back();
    79. it = v.begin();
    80. while (it != v.end())
    81. {
    82. cout << *it << " ";
    83. ++it;
    84. }
    85. cout << endl;
    86. }
    87. void TestVector5()
    88. {
    89. vector<int> v{ 1,2,3,4 };
    90. auto pos = find(v.begin(), v.end(), 3);
    91. if (pos != v.end())
    92. {
    93. v.insert(pos, 30);
    94. }
    95. vector<int>::iterator it = v.begin();
    96. while (it != v.end())
    97. {
    98. cout << *it << " ";
    99. ++it;
    100. }
    101. cout << endl;
    102. pos = find(v.begin(), v.end(), 3);
    103. // 删除pos位置的数据
    104. v.erase(pos);
    105. it = v.begin();
    106. while (it != v.end()) {
    107. cout << *it << " ";
    108. ++it;
    109. }
    110. cout << endl;
    111. }
    112. void TestVector6()
    113. {
    114. vector<int> v{ 1,2,3,4 };
    115. //通过[]读写第0个位置
    116. v[0] = 10;
    117. cout << v[0] << endl;
    118. //使用for+[]方式遍历
    119. for (size_t i = 0; i < v.size(); ++i)
    120. {
    121. cout << v[i] << " ";
    122. }
    123. cout << endl;
    124. vector<int> swapv;
    125. swapv.swap(v);
    126. //使用迭代器遍历
    127. auto it = swapv.begin();
    128. while (it != swapv.end())
    129. {
    130. cout << *it << " ";
    131. ++it;
    132. }
    133. // 3. 使用范围for遍历
    134. for (auto x : v)
    135. cout << x << " ";
    136. cout << endl;
    137. }
    138. int main()
    139. {
    140. TestVector1();
    141. TestVector2();
    142. TestVector4();
    143. TestVector5();
    144. TestVector6();
    145. return 0;
    146. }

     拜拜啦,又是朝着money奋斗的一天!

  • 相关阅读:
    【六袆 - MySQL】SQL优化;Explain SQL执行计划分析;
    【从零开始的Java开发】1-6-2 泛型:概述、泛型作为方法参数、自定义泛型、自定义泛型方法
    ES整合SpringBoot
    Mybatis
    【牛客-剑指offer-数据结构篇】JZ23 链表中环的入口结点 两种实现 Java实现
    分享一个MSSA插值的GRACE level数据集
    平衡二叉树AVL的插入删除
    【NLTK系列01】:nltk库介绍
    YOLOV7训练TT100K交通标识符数据集
    裁员真能拯救中国互联网?
  • 原文地址:https://blog.csdn.net/lang_965/article/details/128154040