iterator insert(iterator it,const T& x):双端队列中某一元素前增加一个元素x
返回安插点的位置
源码如下:
....
*pos = x_cpoy;
return *pos; //pos即为新插入点的位置
////////////////////////////////////////
// 2018/04/24 7:38:54
// deque-insert
// 在pos之前插入数据
#include <iostream>
#include <deque>
#include <iterator>
#include <algorithm>
using namespace std;
template<class T>
class Print{
public:
void operator()(T& t){
cout << t << " ";
}
};
//=========================
int main(){
int ary[5] = { 1, 2, 3, 4, 5 };
//fill(ary, ary + 5, 1);
deque<int> d;
deque<int>::iterator it;
Print<int> print;
copy(ary,ary+5,back_inserter(d));
cout << "deque d:" << endl;
for_each(d.begin(),d.end(),print);
cout << endl;
it = d.begin();
// insert value "5" at the position "it"
cout << "d.insert(it,5)" << endl;
d.insert(it, 5);
for_each(d.begin(),d.end(),print);
cout << endl;
// insert range ary+2 - ary+5 at the position "it"
it = d.begin() + 5;
cout << "d.insert(it,ary+2,ary+5)" << endl;
// it 指向 5 1 2 3 4 5 中的最后一个5,并向其前加入元素
// ary+2 ~ ary+5, 也就是 3 4 5
d.insert(it, ary + 2, ary + 5);
for_each(d.begin(),d.end(),print);
cout << endl;
// insert 2 value of "20" at the position "it"
it = d.end() - 2;
cout << "d.insert(it,2,20)" << endl;
d.insert(it, 2, 20);
for_each(d.begin(),d.end(),print);
cout << endl;
return 0;
}
/*
OUTPUT:
deque d:
1 2 3 4 5
d.insert(it,5)
5 1 2 3 4 5
d.insert(it,ary+2,ary+5)
5 1 2 3 4 3 4 5 5
d.insert(it,2,20)
5 1 2 3 4 3 4 20 20 5 5
*/