C++:vector怎么赋值?

Treasure.ticdc 2020-06-29 12:08:00
#C++ vector#
vector正常能不能在声明的时候给它赋值? 还是必须要用C数组?
另外,那个push_back是怎么work?是把所有数据往前位移然后挤掉第一个还是替换最后一个?把push_back放在循环里有什么好处吗?
...全文
3943 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-06
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
舒泱 2020-07-12
  • 打赏
  • 举报
回复
引用 15 楼 Treasure.ticdc 的回复:
[quote=引用 12 楼 舒泱 的回复:][quote=引用 9 楼 Treasure.ticdc 的回复:]问题是,怎么覆盖一个值呢?
覆盖一个值就和普通数组赋值一样。比如vector<int> v(10);是初始化v有10个值,每个值都为0,你要改变第0个元素的值,就v[0]=9,这样就覆盖了v[0]的值了[/quote] 这个好像不行吧。下标在vector中不是只能用于读取吗[/quote] 不仅是用于读取,也可以赋值,就像C语言里a[0]=1;一样,就把a[0]的值赋成了1
Treasure.ticdc 2020-07-10
  • 打赏
  • 举报
回复
引用 12 楼 舒泱 的回复:
[quote=引用 9 楼 Treasure.ticdc 的回复:]问题是,怎么覆盖一个值呢?
覆盖一个值就和普通数组赋值一样。比如vector<int> v(10);是初始化v有10个值,每个值都为0,你要改变第0个元素的值,就v[0]=9,这样就覆盖了v[0]的值了[/quote] 这个好像不行吧。下标在vector中不是只能用于读取吗
FightingBoom 2020-07-09
  • 打赏
  • 举报
回复
1、楼上的回答都比较全啦,建议可以看看书,查查资料啥的,自己先理解一下~ 2、推荐个网站:https://zh.cppreference.com/w/cpp,可以在上边找找看。 加油,祝楼主好运!
Treasure.ticdc 2020-07-08
  • 打赏
  • 举报
回复
问题是,怎么覆盖一个值呢?
Treasure.ticdc 2020-07-08
  • 打赏
  • 举报
回复
那个push.back()是一个成员函数,把值推到最后并把大小增加1
舒泱 2020-07-08
  • 打赏
  • 举报
回复
引用 9 楼 Treasure.ticdc 的回复:
问题是,怎么覆盖一个值呢?
覆盖一个值就和普通数组赋值一样。比如vector<int> v(10);是初始化v有10个值,每个值都为0,你要改变第0个元素的值,就v[0]=9,这样就覆盖了v[0]的值了
舒泱 2020-07-08
  • 打赏
  • 举报
回复
引用 5 楼 Treasure.ticdc 的回复:
能不能用vector<Type> a(n,{//初始化数值n个});这种形式? 另外vector,我声明n=3,它下表从多少开始?
能啊,vector<int> v(10,2);就是给v初始化成里面有10个值,每个值的大小都是2。但没有vector<int> v(10,{1,2,3……})这种操作。
qq_40162781 2020-07-08
  • 打赏
  • 举报
回复
iter = vec.erase(iter); vec.insert(iter);
棉猴 2020-06-30
  • 打赏
  • 举报
回复 1
下标(索引)都是从0开始,到n-1结束
真相重于对错 2020-06-29
  • 打赏
  • 举报
回复
vector<int> vec={1,2,3,4,5}; push_back应该是放到最后,而他不是简单的放入,它是根据你传入的参数来确定是复制,还是直接移动, 放到循环里只是一个正常操作啊,如果有100000个数据,难道你要写100000行push_back??
Treasure.ticdc 2020-06-29
  • 打赏
  • 举报
回复
又到多少结束?
Treasure.ticdc 2020-06-29
  • 打赏
  • 举报
回复
能不能用vector<Type> a(n,{//初始化数值n个});这种形式? 另外vector,我声明n=3,它下表从多少开始?
真相重于对错 2020-06-29
  • 打赏
  • 举报
回复
引用 3 楼 轻箬笠 的回复:
vector正常能不能在声明的时候给它赋值? 必须可以,不仅仅是vector,map和list也是类似的。set和queue没试过,估计也类似。 没研究过push_back的原理,不过,网上有推荐使用emplace_back代替push_back的。具体可以看stl的源代码。我个人还是倾向于用push_back的,因为工作上很难碰到大量数据的情况(特定公司除外)
c++11后,push_back内部就是调用emplace_back
轻箬笠 2020-06-29
  • 打赏
  • 举报
回复
vector正常能不能在声明的时候给它赋值? 必须可以,不仅仅是vector,map和list也是类似的。set和queue没试过,估计也类似。 没研究过push_back的原理,不过,网上有推荐使用emplace_back代替push_back的。具体可以看stl的源代码。我个人还是倾向于用push_back的,因为工作上很难碰到大量数据的情况(特定公司除外)
zerozerg2006 2020-06-29
  • 打赏
  • 举报
回复
名字都叫push_back了,那显然是推到尾部的意思嘛。 其他的,楼上的大佬已经吐槽的很好了,我就不吐槽了

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧