包含头文件deque
整合
//deque:双端数组
void PrintDeque(deque<int>& d) {
//迭代器遍历
for (deque<int>::iterator it = d.begin(); it != d.end(); it++) {
cout << *it << " ";
//可以用*it来修改值
}
cout << endl;
}
//如果不想修改
void PrintDeque_non(const deque<int>& d) {
for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
void deque_test_01() {
//构造
deque<int> d1;
for (int i = 0; i < 10; i++) {
d1.push_back(i);
}
deque<int> d2(d1.begin(), d1.end()); //用d1的迭代器给d2构造
deque<int> d3(5, 100); //用5个100给d3构造
deque<int> d4(d3); //拷贝构造
}
void deque_test_02() {
//赋值
deque<int> d1;
for (int i = 0; i < 10; i++) {
d1.push_back(i);
}
deque<int> d2;
d2 = d1; // =用来赋值
deque<int> d3;
// d.assign(begin, end):区间赋值,左闭右开,两个迭代器
d3.assign(d1.begin(), d1.end());
deque<int> d4;
d4.assign(5, 10); //给d4赋值5个10
}
void deque_test_03() {
//大小操作
deque<int> d1;
for (int i = 0; i < 10; i++) {
d1.push_back(i);
}
//d.empty():判空,若空返回true,不空返回false,返回值为bool类型
d1.empty();
int s = d1.size(); //d.size():返回deque的大小
//重新指定大小,d.resize(n):若n>原大小,则扩充至n,空余元素用0填充,
//若<原大小,则删除尾部元素
d1.resize(15);
//重新指定大小,d.resize(n, m):若n>原大小,扩充至n,空余元素用m填充,
//若<原大小,则删除尾部元素
d1.resize(20, 100);
}
void deque_test_04() {
//插入和删除
deque<int> d1;
for (int i = 0; i < 10; i++) {
d1.push_back(i); //尾插
}
d1.push_front(100); //头插
d1.pop_back(); //尾删
d1.pop_front(); //头删
deque<int> d2;
for (int i = 0; i < 10; i++) {
d2.push_back(i);
}
//d.insert(iterator, n):在迭代器的位置插入n,前一个参数只能是迭代器
d2.insert(d2.begin(), 100);
//d.insert(iterator, n, m):在迭代器的位置插入n个m,第一个参数只能是迭代器
d2.insert(d2.begin(), 2, 200);
deque<int> d3;
for (int i = 100; i < 110; i++) {
d3.push_back(i);
}
d3.insert(d3.begin(), d2.begin(), d2.begin()+2); //d1.insert(d1::iterator, d2::iterator, d2::iterator):在d1的iterator位置插入区间:d2的两个迭代器区间的元素
deque<int> d4;
for (int i = 0; i < 10; i++) {
d4.push_back(i);
}
//d.erase(iterator):删除迭代器位置的元素,从0开始
d4.erase(d4.begin()+3);
//d.erase(iterator, iterator):删除两个迭代器之间的元素
d4.erase(d4.begin(), d4.begin()+4);
d4.clear();
}
void deque_test_05() {
//数据存取
deque<int> d;
for (int i = 0; i < 10; i++) {
d.push_back(i);
}
cout << d[0] << endl; // []存取
cout << d.at(3) << endl; //d.at(n):第n+1个元素(从0开始)
cout << d.front() << endl; //第一个元素
cout << d.back() << endl; //最后一个元素
}
迭代器遍历
void PrintDeque(deque<int>& d) {
//迭代器遍历
for (deque<int>::iterator it = d.begin(); it != d.end(); it++) {
cout << *it << " ";
//可以用*it来修改值
}
cout << endl;
}
//如果不想修改
void PrintDeque_non(const deque<int>& d) {
for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
构造
void deque_test_01() {
//构造
deque<int> d1;
for (int i = 0; i < 10; i++) {
d1.push_back(i);
}
deque<int> d2(d1.begin(), d1.end()); //用d1的迭代器给d2构造
deque<int> d3(5, 100); //用5个100给d3构造
deque<int> d4(d3); //拷贝构造
}
赋值
void deque_test_02() {
//赋值
deque<int> d1;
for (int i = 0; i < 10; i++) {
d1.push_back(i);
}
deque<int> d2;
d2 = d1; // =用来赋值
deque<int> d3;
// d.assign(begin, end):区间赋值,左闭右开,两个迭代器
d3.assign(d1.begin(), d1.end());
deque<int> d4;
d4.assign(5, 10); //给d4赋值5个10
}
大小操作
void deque_test_03() {
//大小操作
deque<int> d1;
for (int i = 0; i < 10; i++) {
d1.push_back(i);
}
//d.empty():判空,若空返回true,不空返回false,返回值为bool类型
d1.empty();
int s = d1.size(); //d.size():返回deque的大小
//重新指定大小,d.resize(n):若n>原大小,则扩充至n,空余元素用0填充,
//若<原大小,则删除尾部元素
d1.resize(15);
//重新指定大小,d.resize(n, m):若n>原大小,扩充至n,空余元素用m填充,
//若<原大小,则删除尾部元素
d1.resize(20, 100);
}
插入和删除
void deque_test_04() {
//插入和删除
deque<int> d1;
for (int i = 0; i < 10; i++) {
d1.push_back(i); //尾插
}
d1.push_front(100); //头插
d1.pop_back(); //尾删
d1.pop_front(); //头删
deque<int> d2;
for (int i = 0; i < 10; i++) {
d2.push_back(i);
}
//d.insert(iterator, n):在迭代器的位置插入n,前一个参数只能是迭代器
d2.insert(d2.begin(), 100);
//d.insert(iterator, n, m):在迭代器的位置插入n个m,第一个参数只能是迭代器
d2.insert(d2.begin(), 2, 200);
deque<int> d3;
for (int i = 100; i < 110; i++) {
d3.push_back(i);
}
d3.insert(d3.begin(), d2.begin(), d2.begin()+2); //d1.insert(d1::iterator, d2::iterator, d2::iterator):在d1的iterator位置插入区间:d2的两个迭代器区间的元素
deque<int> d4;
for (int i = 0; i < 10; i++) {
d4.push_back(i);
}
//d.erase(iterator):删除迭代器位置的元素,从0开始
d4.erase(d4.begin()+3);
//d.erase(iterator, iterator):删除两个迭代器之间的元素
d4.erase(d4.begin(), d4.begin()+4);
d4.clear();
}
数据存取
void deque_test_05() {
//数据存取
deque<int> d;
for (int i = 0; i < 10; i++) {
d.push_back(i);
}
cout << d[0] << endl; // []存取
cout << d.at(3) << endl; //d.at(n):第n+1个元素(从0开始)
cout << d.front() << endl; //第一个元素
cout << d.back() << endl; //最后一个元素
}