一、前言
deque 容器中,无论是增加元素还是删除元素,都只能借助 deque 模板类提供的成员函数。
二、波及的相干函数
函数 | 性能 |
---|---|
push_back() | 在容器现有元素的尾部增加一个元素 |
pop_back() | 移除容器尾部的一个元素 |
push_front() | 在容器现有元素的头部增加一个元素 |
pop_front() | 移除容器尾部的一个元素 |
emplace_back() | 在容器尾部生成一个元素,效率比 push_back()高 |
emplace_front() | 在容器头部生成一个元素,效率比 push_front()高 |
insert() | 在指定的地位间接生成一个元素 |
emplace() | 在指定的地位间接生成一个元素,效率比 insert 高 |
erase() | 移除一个元素或某一区域内的多个元素 |
clear() | 删除容器中所有的元素 |
insert 用法
格局 | 性能 |
---|---|
iterator insert(pos,elem) | 在迭代器 pos 指定的地位之前插入一个新元素 elem,并返回示意新插入元素地位的迭代器 |
iterator insert(pos,n,elem) | 在迭代器 pos 指定的地位之前插入 n 个元素 elem,并返回示意第一个新插入元素地位的迭代器 |
iterator insert(pos,first,last) | 在迭代器 pos 指定的地位之前,插入其余容器(不仅限于 vector)中位于 [first,last) 区域的所有元素,并返回示意第一个新插入元素地位的迭代器 |
iterator insert(pos,initlist) | 在迭代器 pos 指定的地位之前,插入初始化列表(用大括号 {} 括起来的多个元素,两头有逗号隔开)中所有的元素,并返回示意第一个新插入元素地位的迭代器 |
三、实例
1、增加、删除
std::deque<int> dequeInt;
dequeInt.push_back(319);
std::cout << "push_back dequeInt size:" << dequeInt.size() << std::endl;
dequeInt.pop_back();
std::cout << "pop_back dequeInt size:" << dequeInt.size() << std::endl;
dequeInt.push_front(31);
dequeInt.push_front(571);
dequeInt.push_front(910);
for (int i = 0; i < dequeInt.size(); i++)
{std::cout << "push_front dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
}
dequeInt.pop_front();
for (int i = 0; i < dequeInt.size(); i++)
{std::cout << "pop_front dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
}
dequeInt.emplace_front(1099);
dequeInt.emplace_back(7100);
for (int i = 0; i < dequeInt.size(); i++)
{std::cout << "emplace_front and emplace_back dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
}
dequeInt.emplace(dequeInt.begin() + 2, 4301);
for (int i = 0; i < dequeInt.size(); i++)
{std::cout << "emplace dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
}
dequeInt.erase(dequeInt.begin() + 2);
for (int i = 0; i < dequeInt.size(); i++)
{std::cout << "erase appoint dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
}
后果如下:
2、insert 实例
std::deque<int> dequeInt{4301,2591,671};
std::cout << "dequeInt size:" << dequeInt.size() << std::endl;
dequeInt.insert(dequeInt.begin() + 2, 798);
for (int i = 0; i < dequeInt.size(); i++)
{std::cout << "insert1 dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
}
std::cout << "dequeInt size:" << dequeInt.size() << std::endl;
dequeInt.insert(dequeInt.begin() + 3, 3, 9);
for (int i = 0; i < dequeInt.size(); i++)
{std::cout << "insert2 dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
}
std::cout << "insert2 dequeInt size:" << dequeInt.size() << std::endl;
std::array<int, 3> arrayInt{901,756,34};
dequeInt.insert(dequeInt.begin() + 5, arrayInt.begin(), arrayInt.end());
for (int i = 0; i < dequeInt.size(); i++)
{std::cout << "insert3 dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
}
std::cout << "insert3 dequeInt size:" << dequeInt.size() << std::endl;
dequeInt.insert(dequeInt.begin() + 1, {88,92,34});
for (int i = 0; i < dequeInt.size(); i++)
{std::cout << "insert4 dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
}
std::cout << "insert4 dequeInt size:" << dequeInt.size() << std::endl;
后果如下: