vc 使用容器 deque
deque是标准模板库中的内容和vector一样,deque是双端队列.
函数
描述
c.assign(beg,end)
将[beg; end)区间中的数据赋值给c。
c.assign(n,elem)
将n个elem的拷贝赋值给c。
c.assign(beg,end)
c.assign(n,elem)
c.at(idx)
c.back()
c.begin()
c.clear()
deque<Elem> c
deque<Elem> c1(c2)
Deque<Elem> c(n)
Deque<Elem> c(n, elem)
Deque<Elem> c(beg,end)
c.~deque<Elem>()
c.empty()
c.end()
c.erase(pos)
c.erase(beg,end)
c.front()
get_allocator
c.insert(pos,elem)
c.insert(pos,n,elem)
c.insert(pos,beg,end)
c.max_size()
c.pop_back()
c.pop_front()
c.push_back(elem)
c.push_front(elem)
c.rbegin()
c.rend()
c.resize(num)
c.size()
C1.swap(c2)
Swap(c1,c2)
Deque操作
operator[] 返回容器中指定位置的一个引用。
引用:
#include <deque>
/*#include <vector>*/
using namespace std;
using namespace std;
声明:
std::deque<CClass_A>m_p1;
使用:
m_p1.push_back(message);
m_p1.front();
m_p1.pop_front ();
m_p1.size();
容器 vector 是动态分配空间,作为管理动态数组的优先选择
1) max_size()
返回 vector<T> 理论上可以装的最多 T 的个数。这只是一个理论上的数字, 大概是 4GB/sizeof(T),没有多大实用价值。在程序中不要用。
2) size()
返回 vector<T> 中实际装的 T 的个数。相当于 CArray<>::GetSize()。
3) empty()
如果 vector<T> 中没有任何 T 对象,返回 true。也就是返回 size() == 0。
4) clear();
清除 vector<T> 中的所有 T 对象。执行后 empty() 返回 true。大致相当于 resize(0),但不要求 T 可被缺省构造。相当于 CArray<>::RemoveAll()。
5) resize( size_t n, T t = T() );
将 vector 中的元素个数设置为 n,n 可以大于 size() 也可以小于 size。如果 n 小于 size(),那么 vector 中下标为 n..size()-1 的元素都将被解构。如果 n > size(),那么将在 vector 的后面新增加
n - size() 个相同的元素 t。在增大 vector 时,可能发生存储再次分配。总之,调用resize( n, t ) 后,(size() == n) 成立。
n - size() 个相同的元素 t。在增大 vector 时,可能发生存储再次分配。总之,调用resize( n, t ) 后,(size() == n) 成立。
请注意,如果调用 resize( n ) 不带参数 t ,那么 T 必须可以缺省构造。
6) reserve( size_t n );
事先分配至少可以保存 n 个 T 对象的空间。调用后 (capacity() >= n)成立。
7) capacity();
返回已经分配的存储空间够容纳的 T 类型对象的个数。后续的增加元素操作(如 push_back(), insert())如果增加元素后 vector 中的总元素个数不超过 capacity(),那么 vector 的实现保证不重新分配存储空间。
v.push_back( i );
// 删除 50, 51, ..., 89:
v.erase( v.begin() + 50, v.end() - 10 );
// 删除 49, 48:
v.pop_back();
v.pop_back();
// 全部删除:
v.clear();
v.erase( v.begin() + 50, v.end() - 10 );
// 删除 49, 48:
v.pop_back();
v.pop_back();
// 全部删除:
v.clear();