程序设计常用的C++模板库(STL)

来源:互联网 发布:姓名贴软件 编辑:程序博客网 时间:2024/06/12 20:33

#include<stack>

stack<type>name;


bool empty();

void pop();

void push(const type&);

type & top();

size_type size();


队列

#include<queue>

queue<type>name;


bool empty();

void pop();

void push(const type&);

type & back();

type & front();

size_type size();


优先队列: 出队时,将当前队列中最大的元素出队 可以通过重载<来重新定义最大值的含义

#include<queue>

priority_queue<type>name;


bool empty();

void pop();

void push(const type&);

type & top();

size_type size();


eg:

#include <iostream>
#include <queue>


using namespace std;


struct Node
{
string name;
float score;
bool operator < (const Node &a)const{
return a.score > score;
}
} ;


int main ()
{
priority_queue<Node> pq;
Node in;
in.name = "zxd";
in.score = 100;
pq.push(in);
in.name = "wj";
in.score = 18;
pq.push(in);
in.name = "lcb";
in.score = 60;
pq.push(in);
cout<<pq.top().score;
pq.pop();
cout<<pq.top().score;
pq.pop();
cout<<pq.top().score;
pq.pop();
}


向量:一种特殊的数组

#include <vector>

构造函数和析构函数:

vector<type> c 

vector<type> c(n) 

vector<type> c (n,elem)

vector<type> c (c')

c.~vector<type>()

成员函数:
c.asisgn(beg,end);将[beg,end)区间的数据赋值给c     beg end为地址
c.assign(n,elem);将n个elem赋值给c
c.back(); 返回最后一个值,不检查是否存在
c.begin(); 返回第一个地址
c.capacity(); 检查当前开辟的空间
c.size(); 检查已经储存的个数
c.clear(); 清空
c.empty(); 判断是否为空
c.erase(pos)   删除pos位置的值并返回下一个数据的位置
c.erase(beg,end) 删除区间内的内容
c.insert(pos,elem)在pos位置插入一个elem,传回下一个数据的位置,下面也是
c.insert(pos,n,elem)
c.insert(pos,beg,end)插入区间值,无返回值
c.pop_back(); 删除最后一个元素
c.push_back(); 在尾部添加一个元素
swap(c1,c2);
c1.swap(c2); 交换两者位置
v[n] 返回v中位置为n的元素
大于小于等于的判断也适合

集合:内部通过链表实现  采用了红黑树的平衡二叉树的数据结构查找和添加末元比vector慢 但是添加和删除比较快。多集Multiset中可以有副本键,同一值可以多次出现


#include <set>

构造函数和析构函数:
set c;
set c (op); op为排序准则
set c1 (c2);
set c (beg, end);

set c (beg, end,op);

c.~set ();


Set的可选则形式

set<type>以less<>(operator<)为排序准则

set<type,op>

multiset<type>

multiset<type,op>


重要成员函数

iterator begin() ;返回指向第一个元素的迭代器

iterator end();

void clear();

void empty();

iterator insert (type &val );插入一个新的元素,返回新元素的位置

iterator insert (iteratorpos, type &val );pos是一个提示性的位置,指出插入操作的搜索起点。如果提示恰当可以大大加快速度

void erase(iterator pos);删除pos位置的元素

void erase(iterator start,iterator end);

size_type erase(const type & val) 返回删除的结点个数

pair<iterator start, iterator end> equal_range(const type & val) 查找多集中键值等于val的所有元素,返回知识范围的两个迭代器以pair返回。

size_type count(const type & val) 查找迭代器中值为val的元素个数

iterator find(const type &val) 返回一个迭代器指向键值为val的元素,如果没有找到则返回end();

size_type size();容器中元素的个数

void swap(set&object) 交换两个链表中的元素


映射(Map)


列表(List) 



0 0
原创粉丝点击