当前位置:   article > 正文

std::copy对std::vector、std::set、数组的使用_std::vector copy

std::vector copy

注意:std::copy只负责复制,不负责申请空间,所以复制前必须有足够的空间!!!

std::copy的函数形式为:

std::copy(src_start_iter, src_end_iter, std::back_inserter(dst_container));

以下为写的测试代码:

  1. #include <iostream>
  2. #include <string>
  3. #include <algorithm>
  4. #include <vector>
  5. #include <set>
  6. #include <map>
  7. void stdCopyTest()
  8. {
  9. // vector copy to vector
  10. {
  11. std::vector<int> vtSrc = { 1, 2, 3, 4, 5 };
  12. std::vector<int> vtDst(6, 0); // std::vector(size, init_data), insert into begin,it must be new enough space first.
  13. std::copy(vtSrc.begin(), vtSrc.end(), vtDst.begin());
  14. for (size_t i = 0, uSize = vtDst.size(); i < uSize; ++i)
  15. {
  16. std::cout << vtDst[i] << '\t';
  17. }
  18. std::cout << std::endl;
  19. std::vector<int> vtDst01(0);
  20. std::copy(vtSrc.begin(), vtSrc.end(), std::back_inserter(vtDst01));
  21. for (size_t i = 0, uSize = vtDst01.size(); i < uSize; ++i)
  22. {
  23. std::cout << vtDst01[i] << '\t';
  24. }
  25. std::cout << std::endl;
  26. }
  27. // set insert into vector
  28. {
  29. std::set<int> setSrc = { 5, 4, 3, 2, 1 };
  30. std::vector<int> vtDst;
  31. std::copy(setSrc.begin(), setSrc.end(), std::back_inserter(vtDst));
  32. for (size_t i = 0, uSize = vtDst.size(); i < uSize; ++i)
  33. {
  34. std::cout << vtDst[i] << '\t';
  35. }
  36. std::cout << std::endl;
  37. }
  38. // array insert into vector
  39. {
  40. int szSrc[5] = { 1, 2, 3, 4, 5 };
  41. std::vector<int> vtDst;
  42. std::copy(szSrc, szSrc + sizeof(szSrc) / sizeof(int), std::back_inserter(vtDst));
  43. for (size_t i = 0, uSize = vtDst.size(); i < uSize; ++i)
  44. {
  45. std::cout << vtDst[i] << '\t';
  46. }
  47. std::cout << std::endl;
  48. }
  49. // vector insert into array
  50. {
  51. std::vector<int> vtSrc = { 1, 2, 3, 4, 5 };
  52. int szDst[8] = { -1 };
  53. std::copy(vtSrc.begin(), vtSrc.end(), szDst);
  54. for (size_t i = 0, uSize = vtSrc.size(); i < uSize; ++i)
  55. {
  56. std::cout << szDst[i] << '\t';
  57. }
  58. std::cout << std::endl;
  59. }
  60. // array insert into array
  61. {
  62. int szSrc[5] = { 1, 2, 3, 4, 5 };
  63. int szDst[8] = { -1 };
  64. std::copy(szSrc, szSrc + sizeof(szSrc) / sizeof(int), szDst);
  65. for (size_t i = 0, uSize = sizeof(szSrc) / sizeof(int); i < uSize; ++i)
  66. {
  67. std::cout << szDst[i] << '\t';
  68. }
  69. std::cout << std::endl;
  70. }
  71. // map copy to map
  72. {
  73. std::map<int, std::string> mp4Src =
  74. {
  75. std::pair<int, std::string>(1, "abc123"),
  76. std::pair<int, std::string>(2, "bcd456"),
  77. std::pair<int, std::string>(3, "cde789"),
  78. };
  79. std::cout << "***********************" << std::endl;
  80. std::map<int, std::string> mp4Dst;
  81. mp4Dst.insert(mp4Src.begin(), mp4Src.end());
  82. for (auto iter = mp4Dst.begin(); iter != mp4Dst.end(); ++iter)
  83. {
  84. std::cout << iter->first << ": " << iter->second << std::endl;
  85. }
  86. std::cout << "***********************" << std::endl;
  87. }
  88. return;
  89. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/452762
推荐阅读
相关标签
  

闽ICP备14008679号