STL标准模板库是C++学习的重点,STL中包含六部分容器、迭代器、泛型算法、函数对象、适配器以及空间配置器。
今天首先了解一下容器,容器是一种容纳特定类型对象的集合,C++容器分为顺序容器和关联容器。
顺序容器:元素的值与元素在容器中的位置无关,可以在指定位置插入或者删除元素。
- vector:矢量容器,数组 #include<vector>
- list::双向链表容器 双向链表 #include<list>
- deque:双端队列容器 双端队列 #include<deque>
关联容器:元素在容器中排序的,插入元素不能再指定位置,容器会按照底层规则选择合适的位置, 红黑树
- set 单重集合 不允许键重复 #include<set>
- multiset 多重集合 允许键重复
- map 单映射容器 key-value 键不可重复1:1 #include<map>
- multimap 多重映射容器 key-value 键可重复1:n
容器适配器 deque
- stack #include<stack> FILO
- queue #include<queue> FIFO
- priority_queue
容器的使用方法如下,
int main()
{
std::vector<int> vec1;
std::vector<int> vec2(10);
std::vector<int> vec3(10, 20);
int arr[] = { 123, 2, 3456, 7 };
int len = sizeof(arr) / sizeof(arr[0]);
std::vector<int> vec4(arr, arr + len);
//Show(vec4);
for (int i = 0; i < 10; i++)
{
vec1.push_back(i + 1);
}
Show(vec1);
vec1.insert(vec1.begin() + 5,100);
Show(vec1);
std::sort(vec1.begin(), vec1.end());
Show(vec1);
vec1.pop_back();
vec1.erase(vec1.end() - 2);
Show(vec1);
std::cout << vec1.front() << std::endl;
std::cout << vec1.back() << std::endl;
return 0;
}
#include<list>
int main()
{
std::list<int> lst;
for (int i = 0; i < 10; i++)
{
lst.push_front(i + 1);
}
Show(lst);
lst.pop_front();
Show(lst);
lst.erase(++++lst.begin());
Show(lst);
//std::sort(lst.begin(), lst.end());
lst.sort();
Show(lst);
return 0;
}
#include<deque>
int main()
{
std::deque<int> dqu;
for (int i = 0; i < 10; i++)
{
dqu.push_front(i + 1);
}
Show(dqu);
dqu.erase(dqu.end() - 3);
Show(dqu);
dqu.sort();
return 0;
}