Effective STL-尽量使用区间操作代替单元素操作

一、原因:

1、代码更少,更简洁;
2、 对序列容器,还可以避免单个单个申请造成多次分配内存(拷贝开销大)

二、区间操作:

1)区间构造:
container::container(InputIterator begin,InputIterator end);
2)区间插入:

对于序列容器:

void Container::insert(Iterator positon,//插入位置
                       InputIterator begin, //目标起点位置
                       InputIterator end);  //目标终点

对于关联容器(他们不需要指定位置,位置有他们自己机制决定)

 void Container::Insert(InputIterator begin,InputIterator end);
3)区间删除:

对于序列容器:

iterator Container:erase(Iteraor begin,Iterator);

对于关联容器:

void Container::erase(Iterator begin,Iterator end);
4)区间赋值
void Container::assign(InputIterator begin,InputIterator end);

三、 实例

给两个vector,v1和v2,使v1得内容为v2后半部分。

方法一:
v1.assign(v2.begin()+v2.size()/2,v2.end());
方法二:
v1.clear();
v1.insert(v2.begin()+v2.size()/2,v2.end());
方法三:
v1.clear();
copy(v2.begin()+v2.size()/2,v2.end(),back_insert(v1);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值