#include #include using namespace std; void print_deque(const deque&); ostream& operator<<(ostream& out, const deque& obj); int main() { // Constructors deque d1; deque d2(5); deque d3(5,19); deque d4{2,3,5,7,11,13,17}; cout << "d2 = " << d2 << endl; cout << "d3 = " << d3 << endl; cout << "d4 = " << d4 << endl; deque d5(d4.begin(),d4.begin()+3); deque d6(d4); deque d7(move(d4)); cout << "d4 = " << d4 << endl; cout << "d5 = " << d5 << endl; cout << "d6 = " << d6 << endl; cout << "d7 = " << d7 << endl << endl; // Capacity functions cout << "capacity functions" << endl; cout << "d7.size()=" << d7.size() << endl; cout << "d7.max_size()=" << d7.max_size() << endl; d7.resize(d7.size()*2); cout << "d7.size()=" << d7.size() << endl; cout << "d7 = " << d7 << endl; d7.shrink_to_fit(); cout << "d7.size()=" << d7.size() << endl << endl; // Access functions cout << "access functions" << endl; cout << "d6.front()=" << d6.front() << endl; cout << "d6.back()=" << d6.back() << endl; cout << "d6.at(3)=" << d6.at(3) << endl; cout << "d6 = " << d6 << endl << endl; // Modifier functions cout << "modifier functions" << endl; d1.assign({7,6,5,4,3,2,1}); cout << "d1 = " << d1 << endl; d2.assign(d1.crbegin(),d1.crend()); cout << "d2 = " << d2 << endl; d2.erase(d2.begin()+3); cout << "d2 = " << d2 << endl << endl; cout << "insert, pop_back, push_back, swap" << endl; d2.insert(d2.begin()+3,15); d2.pop_back(); d2.push_back(30); d2.pop_front(); d2.push_front(40); cout << "d2 = " << d2 << endl; d1.swap(d2); cout << "d1 = " << d1 << endl; cout << "d2 = " << d2 << endl << endl; // Member operators cout << "member operators" << endl; d1[2] = d2[3]*2; cout << "d1 = " << d1 << endl; d1.assign(d2.begin(),d2.begin()+5); d1.push_back(13); cout << "d1 = " << d1 << endl; cout << "d2 = " << d2 << endl; d3 = d1; d3.resize(10); cout << "d3 = " << d3 << endl << endl; cout << "emplace" << endl; auto it = d2.emplace ( d2.begin()+1, 100 ); d2.emplace ( it, 200 ); d2.emplace ( d2.end(), 300 ); cout << "d2 = " << d2 << endl; d2.emplace_front(9); d2.emplace_back(19); cout << "d2 = " << d2 << endl << endl; cout << "relational operators" << endl; cout << boolalpha; cout << "d1 == d3: " << (d1 == d3) << endl; cout << "d1 < d2: " << (d1 < d2) << endl; cout << "d1 < d3: " << (d1 < d3) << endl; cout << "d2 < d3: " << (d2 < d3) << endl; } ostream& operator<<(ostream& out, const deque& obj) { for (auto deqIt = obj.cbegin(); deqIt != obj.cend(); ++deqIt) cout << *deqIt << ' '; return out; }