接着上一章继续为大家介绍容器,这次所介绍的都是与数据结构有关的容器;
以下类都可使用自定义类型
双向链表:list
迭代器名:iterator
迭代器使用:
list<int> ppp;
for (int i=0;i<10;i++)
{
ppp.push_front(i);
}
for (list<int>::iterator i = ppp.begin(); i != ppp.end(); i++)//迭代器的创建i为迭代器
{
cout << *i << endl;//通过迭代器访问元素
}
list中的成员函数
assign | 将元素从列表中擦除并将一组新的元素复制到目标列表。 |
back | 返回对列表中最后一个元素的引用。 |
begin | 返回发现列表中第一个元素的位置的迭代器。 |
cbegin | 返回发现列表中第一个元素的位置的常量迭代器。 |
cend | 返回发现一个列表中最后一个元素之后的位置的敞亮表达式。 |
clear | 消除列表中的全部元素。 |
crbegin | 返回发现反向列表中第一个元素的位置的常量迭代器。 |
crend | 返回用于发现反向列表中最后一个元素之后的位置的常量迭代器。 |
emplace | 将构造的元素插入到列表中的指定位置。 |
emplace_back | 在列表的结尾处添加一个就地构造的元素。 |
emplace_front | 在列表的起始位置添加一个就地构造的元素。 |
empty | 测试列表是否为空。 |
end | 返回用于发现列表中最后一个元素之后的位置的迭代器。 |
erase | 从列表中的指定位置移除一个或一系列元素。 |
front | 返回对列表中第一个元素的引用。 |
get_allocator | 返回用于构造列表的 allocator 对象的一个副本。 |
insert | 将一个、几个或一系列元素插入列表中的指定位置。 |
max_size | 返回列表的最大长度。 |
merge | 将元素从参数列表移除,将它们插入目标列表,将新的组合元素集以升序或其他指定顺序排序。 |
pop_back | 删除列表末尾的元素。 |
pop_front | 删除列表起始处的一个元素。 |
push_back | 在列表的末尾添加元素。 |
push_front | 在列表的开头添加元素。 |
rbegin | 返回发现反向列表中第一个元素的位置的迭代器。 |
remove | 清除列表中与指定值匹配的元素。 |
remove_if | 将满足指定谓词的元素从列表中消除。 |
rend | 返回发现反向列表中最后一个元素之后的位置的迭代器。 |
resize | 为列表指定新的大小。 |
reverse | 反转列表中元素的顺序。 |
size | 返回列表中元素的数目。 |
sort | 按升序或其他顺序关系排列列表中的元素。 |
splice | 将元素从自变量列表中删除或将它们插入目标列表。 |
swap | 交换两个列表的元素。 |
unique | 从列表中删除满足某些其他二元谓词的相邻重复元素或相邻元素。 |
栈:stack
栈的类其实非常简单常用的就五个成员函数,它实现的功能是先进后出的规则
成员函数:
empty | 测试栈是否为空。 |
pop | 删除元素从堆栈的顶部。 |
push | 将一个元素添加到堆栈的顶部。 |
size | 返回栈中元素的数量。 |
top | 获取栈顶元素。 |
使用:
stack<int> pp;//创建栈
for (int i = 0; i < 10; i++)
{
pp.push(i);在栈顶插入元素
}
for (; !pp.empty();)//判断栈是否为空
{
cout << pp.top();//打印栈顶元素
pp.pop();//删除栈顶元素
}
队列:queue(普通队列) deque(可头尾插入的队列) priority_queue(优先队列)
先来看看函数
普通队列:queue
常用成员函数:
back | 最后返回一个引用,最近添加元素的队列。 |
empty | 测试队列是否为空。 |
front | 返回一个引用队列第一个进入的元素。 |
pop | 删除第一个进入队列的元素。 |
push | 将一个元素添加到队列的后面。 |
size | 返回队列中元素的数量。 |
使用:
queue<int>pp;
for (int i = 0; i < 10; i++)
{
pp.push(i);
}
for (; !pp.empty();)
{
cout << pp.front();
pp.pop();
}
可头尾插入的队列:deque
“属性” | 说明 |
---|---|
assign | 将元素从 deque 中清除并将新的元素序列复制到目标 deque 。 |
at | 返回对 deque 中指定位置的元素的引用。 |
back | 返回对 deque 中最后一个元素的引用。 |
begin | 返回一个随机访问 iterator,它寻址 中的第一个元素 deque 。 |
cbegin | 返回一个指向 deque 中第一个元素的常量迭代器。 |
cend | 返回指向刚超出 deque 末尾位置的随机访问 const 迭代器。 |
clear | 清除 deque 的所有元素。 |
crbegin | 返回一个指向以相反顺序查看的 deque 中的第一个元素的随机访问常量迭代器。 |
crend | 返回一个指向以相反顺序查看的 deque 中的第一个元素的随机访问常量迭代器。 |
emplace | 将就地构造的元素插入到指定位置的 deque 中。 |
emplace_back | 将就地构造的元素添加到 deque 的末尾。 |
emplace_front | 将就地构造的元素添加到 deque 的开头。 |
empty | 如果 deque 包含零个元素,则返回 true ;如果它包含一个或多个元素,则返回 false 。 |
end | 返回指向刚超出 deque 末尾位置的随机访问迭代器。 |
erase | 从指定位置删除 deque 中一个或一系列元素。 |
front | 返回对 deque 中第一个元素的引用。 |
get_allocator | 返回用于构造 allocator 的 deque 对象的副本。 |
insert | 将一个、多个或一系列元素插入到指定位置的 deque 中。 |
max_size | 返回 deque 的最大可取长度。 |
pop_back | 清除 deque 末尾处的元素。 |
pop_front | 清除 deque 开头处的元素。 |
push_back | 将元素添加到 deque 的末尾。 |
push_front | 将元素添加到 deque 的开头。 |
rbegin | 返回指向反向 deque 中的第一个元素的随机访问迭代器。 |
rend | 返回指向刚超出反向 deque 中的最后一个元素位置的随机访问迭代器。 |
shrink_to_fit | 放弃额外容量。 |
size | 返回 deque 中的元素数量。 |
swap | 交换两个 deque 的元素。 |
使用:
deque<int >pp = {5,8,43,48,463,4,6};//初始化的创建方法
for (; !pp.empty(); )
{
cout << pp.front()<<endl;
pp.pop_front();
}
优先队列: priority_queue
成员函数:
empty | 测试 priority_queue 是否为空。 |
pop | 从顶部位置移除 priority_queue 的最大元素。 |
push | 基于运算符中元素的优先级向优先级队列中添加元素 < 。 |
size | 返回 priority_queue 中的元素数量。 |
top | 返回对 priority_queue 顶部的最大元素的常量引用。 |
使用:
//priority_queue<int,array<int,6> >dd;
priority_queue<int, vector<int> >dd ;//都可以但建议这样写
for (int i=0;i<10;i++)
{
dd.push(rand()%198);
}cout << dd.size() << endl;
for (; !dd.empty();)
{
cout << dd.top()<<endl;//此处输出的为已经排好序的组
dd.pop();
}