STL中基本容器string、vector、list、deque、set、map之间的区别

在STL中基本容器有: string、vector、list、deque、set、map

set 和map都是无序的保存元素,只能通过它提供的接口对里面的元素进行访问;

set:集合, 用来判断某一个元素是不是在一个组里面,使用的比较少;
map:映射,相当于字典,把一个值映射成另一个值,如果想创建字典的话使用它好了;

底层采用的是树型结构,多数使用平衡二叉树(RB-Tree)实现,查找某一值是常数时间,遍历起来效果也不错,只是每次插入值的时候,会重新构成底层的平衡二叉树,效率有一定影响。

string、vector、list、deque、set 是有序容器。

1、string

string 是basic_string<char> 的实现,在内存中是连续存放的。为了提高效率,都会有保留内存,如string s= "abcd",这时s使用的空间可能就是255,当string再次往s里面添加内容时不会再次分配内存.直到内容>255时才会再次申请内存,因此提高了它的性能。

当内容>255时,string会先分配一个新内存,然后再把内容复制过去,再复制先前的内容。

对string的操作,如果是添加到最后时,一般不需要分配内存,所以性能最快;

如果是对中

猜你喜欢

转载自blog.csdn.net/chenlycly/article/details/40833899
今日推荐