vector基础使用

1. vector基本操作简介

学习这些东西一定要学会利用自己已经的东西来推广到未知的知识了解。所以我们可以利用上一节的string知识来学习vector.因为string本质上就是一个容器,只不过这个容器只能存放字符而已。而vector这是一个更大范围的容器,它基本上可以看做成无所不包的容器!

 
访问vector对象
使用range for语句来获得,同string字符串一样
  • for(auto   i : vec)
  • for(auto &i : vec)

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

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

2. vector对象的索引

索引的下标的定义同string类型一样
  • 下标的类型为size_type
  • 常量vector法使用下标获取
  • 尤其要注意小标的范围

不能使用下标来添加元素

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




实例练习:
  1. 访问并求平方数
  2. 访问并修改词为大写
  3. 尝试比较一下两个不同类型的元素
  4. 尝试设计一个常量的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 尝试比较一下两个不同类型的元素
  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 尝试设计一个常量的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

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值