c++中vector做形参传递问题

最近工作遇到了想传递vector容器的问题,于是找了很多资料查看了一下,自己也通过调试理解了一下,

代码:


如图:代码第69行定义了一个vector,然后我写了3个初始化容器的函数init_vector1,init_vector2和init_vector3

通过调试可以知道:

init_vector1是无法给容器vec添加元素的,因为这里采用的是值传递,形参的改变无法影响到实参vec,而且实参给形参赋值的时候会调用vector的拷贝构造函数浪费资源。

init_vector2和init_vector3是可以给容器vec添加元素的,他们分别采用的引用传递和指针传递,在函数内部形参发生改变时,这种改变可以直接“传递”给被调用的实参

现在再来看看sort_vector4,这个函数是想给vec容器里面的元素从大到小排序,这里用的是迭代器传参,实际通过调试也达到了预期的效果(其实这里也可以使用引用传参)

总结一下:

如果是想改变容器长度(比如插入,删除某些元素),这个时候采用引用传递或者指针(建议用引用,尽管指针很强大但是也很危险)

如果是需要传递容器其他的用途(比如上面的排序,或者拿来做一些比较检测某个值是否在容器内)可以采用迭代器传递


水平有限,如果有什么错误,望大家指出。


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值