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

来源:互联网 发布:战略规划 知乎 编辑:程序博客网 时间:2024/06/02 00:24

一、原因:

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