#include#include #include #include using namespace std; void printDeque(deque d){ for (auto it = d.cbegin();it < d.cend();it ++){ cout << *it<< " "; } cout << endl; } void dequeContructor(){ //way1 deque d0; deque d1 {5,4,3}; printDeque(d1); //way2 deque d2(5); printDeque(d2); //way3 deque d3(5,10); printDeque(d3); //way4 deque d4(d2); printDeque(d4); //way5 array arr {11,22,33,44,55}; deque d5(arr.data()+2,arr.data()+4); printDeque(d5); } void printValue(int value){ cout << value << " "; } void dequeTraverse() { deque d1 {5,6,7,8,9}; //way1 auto it = d1.cbegin(); while (it != d1.cend()) { cout << *it << " "; it ++; } cout << endl; //way2 for (auto it = d1.rbegin(); it < d1.rend();it ++){ if (*it == 7){ *it =88; } cout << *it << " "; } cout << endl; //way3 for (auto value : d1){ cout << value << " "; } cout << endl; //way4 for_each(d1.crbegin(),d1.crend(),printValue); cout << endl; } void dequeAcess(){ deque d {5,6,7,8,9}; cout << d[2] << endl; //way1 d.at(3) = 99; //way2 cout << d.front() << "~" << d.back() << endl; //way3 //cout << d.data() << endl; deque没有data(); } void dequeInsertDelete(){ deque d; //调用push_back()向容器尾部添加数据。 d.push_back(2); //{2} //调用pop_back()移除容器尾部的一个数据。 d.pop_back(); //{} //调用push_front()向容器头部添加数据。 d.push_front(2);//{2} //调用pop_front()移除容器头部的一个数据。 d.pop_front();//{} //调用 emplace 系列函数,向容器中直接生成数据。 d.emplace_back(2); //{2} d.emplace_front(3); //{3,2} //emplace() 需要 2 个参数,第一个为指定插入位置的迭代器,第二个是插入的值。 d.emplace(d.begin() + 1, 4);//{3,4,2} for (auto i : d) { cout << i << " "; } //erase()可以接受一个迭代器表示要删除元素所在位置 //也可以接受 2 个迭代器,表示要删除元素所在的区域。 d.erase(d.begin());//{4,2} d.erase(d.begin(), d.end());//{},等同于 d.clear() std::deque d2{ 1,2 }; //第一种格式用法 d2.insert(d2.begin() + 1, 3);//{1,3,2} //第二种格式用法 d2.insert(d2.end(), 2, 5);//{1,3,2,5,5} //第三种格式用法 std::array test{ 7,8,9 }; d2.insert(d2.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9} //第四种格式用法 d2.insert(d2.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11} for (int i = 0; i < d2.size(); i++) { cout << d2.at(i) << " "; } cout << endl; } int main(){ // dequeContructor(); // dequeTraverse(); dequeInsertDelete(); return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)