/*
第7章 deque双端队列容器
7.1 deque技术原理
7.2 deque应用基础
7.3 本章小结
*/
// 第7章 deque双端队列容器
// 7.1 deque技术原理 ---------------------------------------------------------------------------------------
// 7.2 deque应用基础 ---------------------------------------------------------------------------------------
// 110, []
#include <deque>
#include <iostream>
int main(void)
{
using namespace std;
deque < int > d;
d.push_back(13);
d.push_back(32);
d.push_back(29);
for(size_t i = 0; i < d.size(); i++)
cout << "d[" << i << "] = " << d[i] << endl;
return 0;
}
// 110, it
#include <deque>
#include <string>
#include <iostream>
int main(void)
{
using namespace std;
deque < string > d;
d.push_back("北京");
d.push_back("2008");
d.push_back("奥运");
deque < string > ::iterator i, iend;
iend = d.end();
int j;
for(i = d.begin(), j = 0; i != iend; i++, j++)
cout << *i;
cout << endl;
return 0;
}
// 111 , push_front
#include <deque>
#include <iostream>
int main(void)
{
using namespace std;
deque < int > d;
d.push_back(6);
d.push_back(7);
//头部插入
d.push_front(5);
for(size_t i = 0; i < d.size(); i++)
//打印5 6 7
cout << d[i] << ' ';
cout << endl;
//中间位置插入
d.insert(d.begin() + 1, 9); //在第2个元素前插入9,即5 9 6 7
for(size_t j = 0; j < d.size(); j++)
cout << d[j] << ' ';
cout << endl;
return 0;
}
// 112, erase, pop
#include <deque>
#include <iostream>
int main(void)
{
using namespace std;
deque < int > d;
d.push_back(4);
d.push_back(5);
d.push_back(3);
d.push_back(3);
d.push_back(3);
d.push_back(6);
for(size_t i = 0; i < d.size(); i++)
cout << d[i] << ' ';
cout << endl;
//头尾和任意位置删除元素
d.erase(d.begin() + 1);
d.pop_front();
d.pop_back();
for(size_t j = 0; j < d.size(); j++)
cout << d[j] << ' ';
cout << endl;
//删除所有元素
d.clear();
cout << "执行clear()" << endl << "deque元素全部清除" << endl;
return 0;
}
// 113 reverse_iterator
#include <deque>
#include <iostream>
int main(void)
{
using namespace std;
deque < int > d;
d.push_back(1);
d.push_back(3);
d.push_back(5);
d.push_back(7);
d.push_back(9);
//deque元素的前向遍历
deque < int > ::iterator i, iend;
iend = d.end();
for(i = d.begin(); i != iend; i++)
cout << *i << ' ';
cout << endl;
//deque元素的反向遍历
deque < int > ::reverse_iterator ri, riend;
riend = d.rend();
for(ri = d.rbegin(); ri != riend; ri++)
cout << *ri << ' ';
cout << endl;
return 0;
}
// 114 , swap
#include <deque>
#include <iostream>
using namespace std;
void print(deque < int > &d);
int main(void)
{
//d1
deque < int > d1;
d1.push_back(11);
d1.push_back(12);
d1.push_back(13);
cout << "d1 = ";
print(d1);
//d2
deque < int > d2;
d2.push_back(90);
d2.push_back(91);
// d2.push_back(92);
cout << "d2 = ";
print(d2);
//d1和d2交换
d1.swap(d2); // 元素个数不同,一样可以交换
cout << "d1与d2交换后" << endl;
cout << "d1 = ";
print(d1);
cout << "d2 = ";
print(d2);
return 0;
}
//deque元素打印
void print(deque < int > &d)
{
for(size_t i = 0; i < d.size(); i++)
cout << d[i] << ' ';
cout << endl;
}
// 115
#include <deque>
#include <string>
#include <iostream>
int main(void)
{
using namespace std;
deque < string > d;
//打印deque为空
cout << "d是否为空: " << d.empty() << endl;
//装入元素
d.push_back("红楼梦");
d.push_back("源氏物语");
d.push_back("教父");
d.push_back("水浒传");
d.push_back("24史");
//打印deque所有元素
deque < string > ::iterator i, iend;
iend = d.end();
for(i = d.begin(); i != iend; i++)
cout << *i << " ";
cout << endl;
//打印首元素
cout << "deque首元素为: " << d.front() << endl;
//打印末元素
cout << "deque末元素为: " << d.back() << endl;
//打印元素个数
cout << "deque元素个数为: " << d.size() << endl;
//打印可支持的最大deque元素个数
cout << "deque最大元素个数为: " << d.max_size() << endl;
return 0;
}
// 7.3 本章小结 ---------------------------------------------------------------------------------------
TOP