C++学习-STL标准库

补充:48.如何在共享内存上使用stl标准库?

1)想像一下把STL容器,例如map, vector, list等等,放入共享内存中,IPC一旦有了这些强大的通用数据结构做辅助,无疑进程间通信的能力一下子强大了很多。我们没必要再为共享内存设计其他额外的数据结构,另外,STL的高度可扩展性将为IPC所驱使。STL容器被良好的封装,默认情况下有它们自己的内存管理方案。当一个元素被插入到一个STL列表(list)中时,列表容器自动为其分配内存,保存数据。考虑到要将STL容器放到共享内存中,而容器却自己在堆上分配内存。一个最笨拙的办法是在堆上构造STL容器,然后把容器复制到共享内存,并且确保所有容器的内部分配的内存指向共享内存中的相应区域,这基本是个不可能完成的任务。

2)假设进程A在共享内存中放入了数个容器,进程B如何找到这些容器呢?一个方法就是进程A把容器放在共享内存中的确定地址上(fixed offsets),则进程B可以从该已知地址上获取容器。另外一个改进点的办法是,进程A先在共享内存某块确定地址上放置一个map容器,然后进程A再创建其他容器,然后给其取个名字和地址一并保存到这个map容器里。进程B知道如何获取该保存了地址映射的map容器,然后同样再根据名字取得其他容器的地址。
———————————————

C++的STL标准库

STL(Standard Template Library,标准模板库),是惠普实验室开发的一系列软件的统称,主要出现在C++中;STL提供了六大组件,彼此之间可以组合套用,
这六大组件分别是容器、算法、迭代器、仿函数、适配器和空间配置器。
一、STL标准库的容器
1、vector动态数组
vector为可变长数组(动态数组),定义的vector数组可以随时添加数值和删除元素
2、stack栈
栈为数据结构的一种,是STL中遵循先入后出的容器
3、queue队列
队列是一种先入先出的数据结构
4、deque双端队列
首尾都可以插入和删除的队列称为双端队列
5、map映射
映射和python中的字典类似,一个键对应一个键值
6、set集合
set和python中的集合类似,集合中的元素不重复且有序,自动按照从小到大排序
7、pair
pair只含有两个元素,+可以看作只有两个元素的结构体,其作用为作为二元结构体或作为键值对插入。
8、string字符串
可以把string理解为一个字符串类型,可以像int之类的直接定义。
9、list 链表
就是链表

你可能感兴趣的:(c++,数据结构,算法)