VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 1642|回复: 49

《实用C++》第47课 C++容器之动态数组vector②

[复制链接]
51_avatar_middle
online_admins Syc 发表于 2018-6-13 00:52:42 | 显示全部楼层 |阅读模式
1、vector 的的常用基本操作:
vector<int> arr_int;
① arr_int[idx] 或 arr_int.at(idx) //返回动态数组中下标为 idx 的 arr_int[idx] 元素的值
② arr_int.size();        //返回 arr_int 数组元素的总个数
③ arr_int.front();        //返回 arr_int 数组的第一个元素的值
④ arr_int.back();        //返回 arr_int 数组的最后一个元素的值
⑤ arr_int.clear();        //清空 arr_int 数组,即把里面的所有元素都删除
⑥ arr_int.begin();        //返回 arr_int 数组第一个数的下标
⑦ arr_int.end();        //返回 arr_int 数组最后一个数的下标
⑧ arr_int.empty();        //判断 arr_int 数组是否为空,如果为空则返回true,非空(有元素)则返回false
⑨ arr_int.swap(v1);    //v1是另一个动态数组,将 arr_int 和 v1 两个动态数组的元素互换
⑩ swap(arr_int, v1);    //同⑨

示例代码:
  1. #include <vector>
  2. using namespace std;
  3. int main(int argc, char* argv[])
  4. {
  5.     vector<int> arr_int, arr_2;
  6.     cout << "arr_int.size() = " << arr_int.size() << endl;
  7.     cout << "arr_int.empty() = " << arr_int.empty() << endl;
  8.     arr_int.push_back(0);
  9.     arr_int.push_back(1);
  10.     arr_int.push_back(3);
  11.     arr_2 = arr_int;
  12.     cout << "arr_int.size() = " << arr_int.size() << endl;
  13.     cout << "arr_int.empty() = " << arr_int.empty() << endl;

  14.     cout << "arr_int.at(0) = " << arr_int.at(0) << endl;
  15.     cout << "arr_int[1] = " << arr_int[1] << endl;

  16.     cout << "arr_int.front() = " << arr_int.front() << endl;
  17.     cout << "arr_int.back() = " << arr_int.back() << endl;

  18.     arr_int.clear();
  19.     cout << "arr_int.size() = " << arr_int.size() << endl;
  20.     cout << "arr_int.empty() = " << arr_int.empty() << endl;

  21.     arr_int.swap(arr_2);

  22.     return 0;
  23. }
复制代码


注意:vector 的下标跟普通数组一致,是从 0 开始的!
备注:代码详细讲解详见视频教程!

2、vector 的动态插入:
vector 支持的动态插入也有多种方式:
①、调用 push_back 在尾部插入一个元素,只能是一个一个插入:arr_int.push_back(3);
②、调用 insert 在下标为1的前面插入一个元素,arr_int.insert(arr_int.begin()+1, 888);
③、调用 insert 在下标为2的前面插入3个888元素,arr_int.insert(arr_int.begin()+2, 3, 888);
③、调用 insert 在下标为2的前面插入N个元素:
  1. vector<int> arr_int, arr_2;
  2. arr_int.push_back(0);
  3. arr_int.push_back(1);
  4. arr_int.push_back(3);

  5. arr_2.push_back(2);
  6. arr_2.push_back(5);
  7. arr_2.push_back(6);
  8. arr_int.insert(arr_int.begin() + 2, arr_2.begin(), arr_2.end());

  9. int sz_int[] = { 4, 7, 9 };
  10. arr_int.insert(arr_int.begin() + 4, sz_int, sz_int + 3);
复制代码


怎么样?很灵活吧,其实有了上面的 insert 已经可以兼容到各个方面了!

3、vector 的动态删除:
①、arr_int.pop_back();    //删除 arr_int 动态数组的最后一个元素
②、arr_int.erase(v.begin()+k); //删除 arr_int 动态数组的下标为 k 的元素,返回下一个位置的迭代器
③、arr_int.erase(v.begin()+l, v.end()-r); //删除 arr_int 动态数组中下标 [l,v.end()-r) 的元素

4、vector 的遍历:
①、因为是 vector 也是数组,所以可以使用索引下标来遍历,如下:
  1. for (int idx = 0; idx < arr_int.size(); ++idx)
  2. {
  3.     int value = arr_int[idx];
  4.     cout << "idx = " << idx << ", value = " << value << endl;
  5. }
复制代码


②、使用迭代器遍历:
  1. for (vector<int>::iterator itor = arr_int.begin(); itor != arr_int.end(); ++itor)
  2. {
  3.     int value = *itor;
  4.     cout << "value = " << value << endl;
  5. }
复制代码


5、小作业:
定义一个 int 类型的 vector 动态数组,将以下元素:1, 4, 3, 7, 9, 3, 6, 8, 3, 5, 2, 3, 7 插入到动态数组中。之后,使用 for 循环删除动态数组中的值为 3 的元素,并将结果输出出来!

第47课免费试看,下载地址回复后可见:
游客,如果您要查看本帖隐藏内容请回复

#######################################################
获得所有教学视频、课件、源代码以及售后答疑详见:
《实用C++》:http://www.cctry.com/thread-275996-1-1.html
VC驿站官方客服QQ:8260671

#######################################################




上一篇:《实用C++》第46课 C++容器之动态数组vector①
下一篇:《实用C++》第48课 C++容器之链表list①

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

98_avatar_middle
在线会员 tomok 发表于 2018-6-13 09:04:45 | 显示全部楼层
谢谢分享
继续分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

78_avatar_middle
在线会员 csa 发表于 2018-6-14 21:11:29 | 显示全部楼层
又更新啦,谢谢

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

80_avatar_middle
在线会员 zp521 发表于 2018-6-15 08:40:27 | 显示全部楼层
坚持学习!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

85_avatar_middle
在线会员 99099800 发表于 2018-6-15 11:20:32 | 显示全部楼层
学习一下,感谢分享。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

74_avatar_middle
online_vip08 wssfcn 发表于 2018-6-15 11:37:58 | 显示全部楼层
看看         

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

44_avatar_middle
在线会员 a281288098 发表于 2018-6-16 08:53:48 | 显示全部楼层
版主辛苦,感谢版主,

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

41_avatar_middle
online_vip liguolong 发表于 2018-6-16 14:38:15 | 显示全部楼层
感谢分享。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

96_avatar_middle
在线会员 Jer808 发表于 2018-6-16 16:01:22 | 显示全部楼层
努力学习!~~~

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

95_avatar_middle
在线会员 zjh2008 发表于 2018-6-16 22:04:57 | 显示全部楼层
谢谢分享
继续分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

82_avatar_middle
在线会员 ha521ha 发表于 2018-6-17 08:28:53 | 显示全部楼层
学习中......

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

85_avatar_middle
在线会员 violethzu 发表于 2018-6-17 10:13:54 | 显示全部楼层
下载学习,感谢楼主

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

15_avatar_middle
在线会员 东佳高科 发表于 2018-6-17 20:04:49 | 显示全部楼层
学习一下,感谢分享。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

80_avatar_middle
online_vip lanyihr888 发表于 2018-6-17 22:14:07 | 显示全部楼层
继续学习 谢谢分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

66_avatar_middle
在线会员 wxc300 发表于 2018-6-18 17:49:09 | 显示全部楼层
学习一下,感谢分享。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

63_avatar_middle
在线会员 wangjiechun 发表于 2018-6-21 09:39:53 | 显示全部楼层
谢谢老师的讲解

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

49_avatar_middle
在线会员 yuanpinq 发表于 2018-6-21 20:42:24 | 显示全部楼层
规划狗入会费入会费

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

06_avatar_middle
online_vip 1938537171 发表于 2018-6-22 18:38:02 | 显示全部楼层
我爱学习 学习爱我

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

22_avatar_middle
在线会员 supersct 发表于 2018-6-22 22:06:43 | 显示全部楼层
学习一下
感谢分享

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

74_avatar_middle
在线会员 jiaokai123 发表于 2018-6-23 00:19:14 | 显示全部楼层
zhichi./..

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-8-18 18:28

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表