c++标准库(STL)

c++中提供了一些常用的模板类数据结构供用户使用

一.string类


二.vector类

1.初始化方式:

vector v1;
vector v2(v1); 初始化为v1
vector v1(n,i); 初始化为n个i
vector v1(n); 初始化为n个默认值


虽然可以对给定元素个数的vector对象预先分配空间,但更有效的方式是:先初始化一个空vector对象,然后再动态的添加元素


2.常用的vector对象的操作

v.empty(); 判空
v.size(); 大小
v.push_back(); 在尾部加入元素
v[n]; 取元素
v1=v2; 赋值


三.迭代器

关键字:iterator
使用方法:
vector<int>::iterator iter=ivec.begin();
for(;iter!=ivec.end();++iter)
{
……
}
特殊的迭代器begin与end,其中end指向最后一个元素的下一位置
迭代器可通过解引用*的方式访问迭代器指向的元素
通常函数形参中不应有vector或其他标准库容器类型的形参,这样会引起大规模复制,常用的方法是:传递容器中需要处理元素的迭代器来传递容器


四.顺序容器

1.顺序容器类别:

1.vector 支持快速随机访问
2.list 支持快速插入删除
3.deque 双端队列

2.容器定义的类型别名:

size_type 无符号整型
iterator 迭代器
const_iterator 只读迭代器
reverse_iterator 逆序迭代器
value_type 元素类型

3.添加元素操作:

c.push_back(t) 尾部插入t
c.push_front(t) 头部插入t
c.insert(p,t) 迭代器p前插入t,返回新添加元素的迭代器
c.insert(p,n,t) 迭代器p前插入n个t

4.容器大小操作:

c.size()
c.maxsize()
c.empty()
c.resize(n) 重设大小,若变小则删除元素,若变大则增加默认元素
c.resize(n,t) 重设大小,若变小则删除元素,若变大则增加t元素

5.访问元素:

c.front() 对第一个元素的引用
c.back() 对最后一个元素的引用
c[n] 类似数组访问形式,n不合法则该操作未定义

6.删除元素:

c.erase§ 删除迭代器p指向的元素
c.erase(b,e) 删除迭代器b e所标记范围内的所有元素
c.clear() 清除所有元素
c.pop_back() 删除最后一个元素
c.pop_front() 删除第一个元素

7.赋值与交换

c1=c2 删除c1中所有元素,将c2元素赋给c1
c1.swap() 交换c1与c2的内容(较快,节省删除元素成本)
c.assign(b,e) 将容器中元素重设为迭代器b e标记范围内的元素
c.assign(n,t) 将容器中元素重设为n个t元素

8.选用标准

要求随机访问元素,则使用vector或deque
要求在容器中间实现插入删除,则使用list
要求在容器首部或尾部插入删除元素,则使用deque
要求仅在读取输入时在中间插入,又需要随机访问元素,则建表时使用list,建成后将其复制到vector中


五.顺序容器适配器

1.stack LIFO
2.queue FIFO
3.priority_queue 有优先级管理的队列

1.栈的操作

s.empty()
s.size()
s.pop()
s.top()
s.push()

2.队列和优先级队列的操作

q.empty()
q.size()
q.pop()
q.front() 仅队列
q.back() 仅队列
q.top() 仅优先级队列
q.push()

六.关联容器

1.关联容器类型

map 关联数组,通过键存储与读取
set 大小可变的集合,通过键读取
multimap 支持一个键多次出现的map
multiset 支持一个键多次出现的set

2.pair类型

示例:
pair<T1,T2> p1(v1,v2);

3.map容器

示例:
map<string,int> m;
m[“Anna”]=1;
插入:
m.insert(e);
删除:
m.erase(k) 删除键为k的元素
m.erase§ 删除迭代器指向元素

猜你喜欢

转载自blog.csdn.net/lxx909546478/article/details/88976015
今日推荐