程序员人生 网站导航

vector基础使用

栏目:php教程时间:2017-02-18 09:25:29

1. vector基本操作简介

学习这些东西1定要学会利用自己已的东西来推行到未知的知识了解。所以我们可以利用上1节的string知识来学习vector.由于string本质上就是1个容器,只不过这个容器只能寄存字符而已。而vector这是1个更大范围的容器,它基本上可以看作成包罗万象的容器!

 

访问vector对象

使用range for语句来取得,同string字符串1样
  • for(auto   i : vec)
  • for(auto &i : vec)

empty & size

同string以的使用方法1样
  • empty(函数是判断vector是不是为空)
  • size(是求vector元素的个数)
    • vetctor<int> :: size_type 
    • vector<string> :: size_type

元素比较

同string以的使用方法1样
  • 相同位置上元素相同,则比较其容量大小
  • 位置上元素不同,则比较第1对不同元素的大小来定
  • 注意如果有些类型没有定义比较的运算符的时候是没法比较的
  • 注意类型之间是不是存在可以比较性

2. vector对象的索引

索引的下标的定义同string类型1样
  • 下标的类型为size_type
  • 常量vector法使用下标获得
  • 特别要注意小标的范围

不能使用下标来添加元素

  • 使用下标运算符只能用来访问已存在的元素;
  • 而且使用下标运算符的时候特别要注意其使用的范围
  • 尽可能使用range for语句来访问下标




实例练习:
  1. 访问并求平方数
  2. 访问并修改词为大写
  3. 尝试比较1下两个不同类型的元素
  4. 尝试设计1个常量的vector,看看能否使用索引来获得
  5. 书中实例统计分数
  6. 实例下标添加元素
  7. 练习3.20 使用下标顺次输出首尾两个数


  1. #pragma region range for 求平方数
  2. //关键是掌握范围 for 来访问vector元素
  3. //要理解援用操作符的作用
  4. vector<int> ivec{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  5. for (auto &i : ivec)
  6. {
  7. i *= i;
  8. }
  9. for (auto i : ivec)
  10. {
  11. cout << i << endl;
  12. }
  13. #pragma endregion
  14. #pragma region 访问并修改string为大写
  15. vector<string> svec{ "i", "am", "wall-e" };
  16. for (auto &s : svec)
  17. {
  18. for (auto &c : s)
  19. {
  20. if (isalpha(c))
  21. {
  22. c = toupper(c);
  23. }
  24. }
  25. }
  26. for (auto s : svec)
  27. {
  28. cout << s << endl;
  29. }
  30. #pragma endregion
  31. #pragma region 尝试比较1下两个不同类型的元素
  32. //if (ivec > svec); //err 没法比较两个不同的类型
  33. vector<int> ivec2{ 1, 2, 3, 4, 5, 6 };
  34. if (ivec > ivec2)
  35. {
  36. cout << "ivec > ivec2" << endl;
  37. }
  38. #pragma endregion
  39. #pragma region 尝试设计1个常量的vector,看看能否使用索引来获得
  40. const vector< int> ivec3{ 1, 2, 3, 4, 5, 6 };
  41. for (decltype(ivec3.size()) i = 0; i < ivec3.size(); i++)
  42. {
  43. int a = ivec3[i]; //可以访问,但是没法修改
  44. }
  45. #pragma endregion
  46. #pragma region 实例统计分数
  47. //vector< int> score(11,0);
  48. //unsigned input = 0;
  49. //unsigned index = 0;
  50. //while (cin >> input)
  51. //{
  52. // if (input < 100)
  53. // {
  54. // score[input / 10]++;
  55. // }
  56. // index++;
  57. // if (index == 10)
  58. // {
  59. // break;
  60. // }
  61. //}
  62. //for (auto i : score)
  63. //{
  64. // cout << i << ",";
  65. //}
  66. //cout << endl;
  67. #pragma endregion
  68. #pragma region 实例下标添加元素
  69. vector< int> addIndex;
  70. //addIndex[1] = 0; //err 没法使用下标来添加元素
  71. #pragma endregion
  72. #pragma region 练习3.20 使用下标顺次输出首尾两个数实例下标添加元素
  73. for (decltype(ivec.size()) i = 0; i < ivec.size()/2; i++)
  74. {
  75. cout << ivec[i] << "," ;
  76. cout << ivec[ivec.size() - i-1] << ",";
  77. }
  78. #pragma endregion

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐