目录
3-2-3, 添加元素(push_back | push_front)
C++中一种容器数据类型, 也叫双端数组, 可以在deque的头尾进行插入删除操作
deque通过中控器控制缓冲区, 缓冲区存放的是真实的数据
需要在导入头文件#include
通过deque<数据类型> 对象名, 可创建deque, 数据类型可以是标准数据类型, 也可以是自定义类型
- //deque中元素的数据类型为string
- deque
d;
- //deque中元素的数据类型为Myclass
- Myclass m1("aaa", 1);
- deque
d;
- //通过拷贝构造方式创建
- deque
d2(d1) ; - //通过迭代器区间方式创建
- deque
d3(d2.begin(), d2.end()) ; - //deque的元素是5个m1
- deque
d4(5, m1) ;
通过deque<数据类型> 对象名2 = 对象名1, 进行赋值
- deque
d1; - deque
d2 = d1;
assign是用新的元素替换原来deque的元素
- //d1中的元素为5个字符串aaa
- d1.assign(5, "aaa");
- //d1的元素被替换为5个字符串bbb
- d1.assign(5, "bbb");
- Myclass m1("aaa", 1);
- Myclass m2("bbb", 2);
- deque
d1; - //d1中的元素为5个m1对象
- d1.assign(5, m1);
- //d1的元素被替换为5个m2对象替换
- d1.assign(5, m2);
insert是向vector指定位置, 添加元素, 支持一次添加多个元素
- //在d1.begin()迭代器指向位置, 插入元素aaa
- d1.insert(d1.begin(), "aaa");
- //在d1.begin()迭代器指向位置, 插入3个字符串bbb
- d1.insert(d1.begin(), 3, "bbb");
- //在d1.begin()迭代器指向位置, 插入区间:d1.begin(), d1.end()指向的元素
- d1.insert(d1.begin(), d1.begin(), d1.end());
- Myclass m1("aaa", 1);
- Myclass m2("bbb", 2);
- deque
d1; - //在d1.begin()迭代器指向位置, 插入元素m1
- d1.insert(d1.begin(), m1);
- //在d1.begin()迭代器指向位置, 插入3个m2
- d1.insert(d1.begin(), 3, m2);
- //在d1.begin()迭代器指向位置, 插入区间:d1.begin(), d1.end()指向的元素
- d1.insert(d1.begin(), d1.begin(), d1.end());
push_back是在尾部插入元素, push_front是在头部插入元素, 两者都只能单个添加
- //在头部插入字符串元素bbb
- d1.push_front("bbb");
- //在尾部插入字符串元素aaa
- d1.push_back("aaa");
- Myclass m1("aaa", 1);
- Myclass m2("bbb", 2);
- deque
d1; - //在头部插入元素m1
- d1.push_front(m1);
- //在尾部插入元素m1
- d1.push_back(m2);
通过对象名[索引]或者对象名.at(索引), 获取deque中的元素
- //通过索引获取元素
- cout << d1[0] << endl;
- //通过at获取元素
- cout << d1.at(1) << endl;
- //获取首元素
- cout << d1.front() << endl;
- //获取尾元素
- cout << d1.back() << endl;
- Myclass m1("aaa", 1);
- Myclass m2("bbb", 2);
- deque
d1; - //在头部插入字符串元素bbb
- d1.push_front(m1);
- //在尾部插入字符串元素aaa
- d1.push_back(m2);
-
- //通过索引获取元素
- cout << d1[0].m_name << " " <
0].m_age << endl; - //通过at获取元素
- cout << d1.at(1).m_name << " " << d1.at(1).m_age << endl;
- //获取首元素
- cout << d1.front().m_name << " " << d1.front().m_age << endl;
- //获取尾元素
- cout << d1.back().m_name << " " << d1.back().m_age << endl;
通过对象名.size(), 获取deque的长度
cout << d1.size() << endl;
通过对象名.resize(), 设置deque的长度
- //设置deque的长度为5
- d1.resize(5);
- //设置deque的长度为10, 多余为用m1填充
- d1.resize(10, m1);
通过对象名.empty(), 判断deque是否为空, 为空返回1, 不为空返回0;
cout << d1.empty() << endl;
通过对象名.pop_front(), 删除deque的头部元素
- //删除deque中的首元素
- d1.pop_front();
通过对象名.pop_back(), 删除deque的尾部元素
- //删除deque中的尾元素
- d1.pop_back();
通过对象名.erase(迭代器名称), 删除迭代器指向的元素
- //删除指定的元素
- d1.erase(d.begin());
- deque
::iterator it; - it++;
- d1.erase(it);
通过对象名.clear(), 删除迭代器指向的元素
- //通过迭代器指定区间进行清空
- d1.erase(d1.begin(), d1.end());
- //清空元素
- d1.clear()
- deque
d1; - d1.insert(d1.begin(), "aaa");
- d1.insert(d1.begin(), "ccc");
- d1.insert(d1.begin(), "bbb");
- d1.insert(d1.begin(), "ddd");
-
- //使用sort方法需要包含头文件#include
- sort(d1.begin(), d1.end());
通过对象名1.swap(对象名2), 可交换两个deque中的元素, 元素类型需要一致
d1.swap(d2);