容器的插入和删除

来源:互联网 发布:ro心动网络 编辑:程序博客网 时间:2024/04/28 05:31
一、顺序容器
顺序容器插入操作:

insert:
有几个不同的成员函数能实现想顺序容器中插入项目。最重要的函数是insert,有下面三种重载形式:
iterator insert(iterator here,value_type const& item)//在指定位置前插入item,并返回新插入项目的迭代器。
void insert(iterator here,size_type n,value_type const& item)//在指定位置前插入n个item副本
template<class inputIterator>
void insert(iterator here,inputIterator first,inputIterator last)//将范围[first,last)的值直接复制到容器中here之前。
其他:
还有两个函数:push_front:在容器头部插入项目,push_back在容器尾部插入项目。容器类型只会提供能用常数复杂度实现的函数,因此,vector提供push_back但没有push_front,而list和deque同时提供push_front和push_back。

顺序容器的清楚操作:
erase:两种erase形式:
iterator erase(iterator pos)//清楚pos所指向的项目,并返回其后继项目的迭代器。
iterator erase(iterator first,iterator last)//清楚范围[first,last)的全部项目,并返回指向最后一个删除项目的后一项目的迭代器。
clear:
会清除容器内所有项目。
其他:
除了这两个基本的清除函数外,顺序容器还使用pop_front来清除容器头部的项目,pop_back清除尾部的项目。
类似push函数,vector提供了pop_back,而list和deque均提供pop_back和pop_front。

二、关联容器
插入操作:

insert:
关联容器的插入操作函数insert存在几种形式,和顺序容器的主要区别在于,它不需要提供一个位置(有一种形式需要提供一个提示性的位置)。insert的行为与容器是否允许重复项目有关。类型set、map、unordered_set、unordered_map要求唯一键,而multiset、multimap、unordered_multiset和unordered_multiset允许重复键。
interator insert(value_type const& iterm)
std::pair<iterator,bool>insert(value_type const& item)
它会试图把item插入到容器中。如果容器允许重复键,则insert一定成功,并返回指向新插入项目的迭代器;而如果容器要求唯一键,则仅当该项目不在容器中时才插入成功。它返回包含一个迭代器和一个bool类型的pair,item被插入是bool为真。
iterator insert(iterator hint,value_type const& item)
它会尝试把item插入到容器中,如果容器允许重复键,则insert一定会成功;否则仅当该项不在容器中时insert才会插入该项。在两种情况下insert均会返回指向新插入项目或已存在的项目的迭代器。
template<class inputInterator>
void insert(inputIterator first,inputIterator last)
它会把范围[first,last)的值复制到容器中,对于有序容器,如果范围[first,last)有序,则性能有所提高。
清除操作:
erase:
void erase(iterator pos)
iterator erase(iterator pos)
清楚pos指向的项目。有序容器没有返回值,无序容器返回后继迭代器(或者为end())。

void erase(iterator first,iterator last)
iterator erase(iterator first,iterator last)
清楚范围[first,last)的全部项目。有序容器没有返回值,无序容器返回指向最后一个删除项目的后一项目的迭代器。
0 0
原创粉丝点击