stl 容器: vector, set, map, stack, queue, unordered_set, unordered_map
1. vector
vector:动态数组,不定长数组(下标从0开始,且动态数组每个元素的默认值为0)
头文件:#include[HTML_REMOVED]
创建:
vetor [HTML_REMOVED] a
vector [HTML_REMOVED] a(10,2) 分配10个空间,并且所有元素值初始化为2
重新分配空间:a.resize(空间大小)
末尾添加新元素方法push_back(在原有的空间基础上增加一个单位的新空间,并把新元素置于该新空间):a.push_back()
访问:a[i]
迭代器访问(将vector内的元素全部遍历一遍):
vector [HTML_REMOVED] a(10,2);
for(auto p = a.begin(); p!=a.end(); p++) cout << *p << endl;
a.begin(),a.end()都是地址,a.end()是最后一个元素的后一个位置的地址
容器大小:
a.size(),返回容器大小
pop_back()函数用于移除容器中的最后一个元素。它不接受任何参数。 调用pop_back()函数将使容器的大小减小1。
a.back()返回最后一个元素
2. set
set:集合,互异性(集合内的元素互不相同),集合的元素按照从小到大排序
头文件:#include[HTML_REMOVED]
创建:
set [HTML_REMOVED] s;//s后面不能加任何东西
插入元素:
a.insert(要插入的元素)
删除元素:
a.erase(要删除的元素)
迭代器访问(将set内的元素全部遍历一遍):
for(auto p = a.begin(); p != a.end();p++) cout << *p << endl;
检查元素是否存在:
s.find(寻找目标);
若找到则返回元素的地址,反之,返回s.end()
容器大小:
s.size(),返回容器大小
3. map
map:键值对(map内的所有键值对按照键从小到大排序)
头文件:#include[HTML_REMOVED]
创建:
map [HTML_REMOVED] s;(键是string类, 值是int类)
添加元素:
m[键] = 值
访问:
m[键],若存在这样的键,则返回对应的值,否则返回0
迭代器访问:
for(auto p = m.begin();p != m.end();p ++) cout << p->first << p->second
first为键,second为值
容器大小:
m.size(),返回容器大小
4. stack
stack:栈(数据先进后出,不支持迭代器访问)
头文件:#include[HTML_REMOVED]
创建栈:
stack [HTML_REMOVED] s;
压栈:
s.push(要压的元素)
出栈:
s.pop()
访问栈顶:
s.top(),返回栈顶元素
容器大小:
s.size(),返回容器大小
5. queue
queue:队列(数据先进先出,不支持迭代器访问)
头文件:#include[HTML_REMOVED]
创建队列:
queue [HTML_REMOVED] q;
入队:
q.push(要入对的元素)
出队:
q.pop()
访问:
q.front(),返回队首的值
q.back(),返回队尾的值
容器大小:
q.size(),返回容器大小
6. unordered_set
unordered_set:无序集合,除了没有顺序以外,其余都与set一样
头文件:#include[HTML_REMOVED]
相对set的好处:set的有序性会使运行时间延长,所以在超时的时候,考虑使用unordered_set
7.unordered_map
unordered_map:无需键值对,除了没有顺序以外,其余都与map一样
头文件:#include[HTML_REMOVED]
相对map的好处:map的有序性会使运行时间延长,所以在超时的时候,考虑使用unordered_map