您的位置:首页 > 编程语言 > C语言/C++

C++list map vector set string

2020-04-27 07:18 531 查看

文章目录

介绍

  • List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。
  • Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要拷贝和移动数据,只需要改变指针的指向就可以了。另外对于新添加的元素,Vector有一套算法,而List可以任意加入。
  • Map,Set属于标准关联容器,使用了非常高效的平衡检索二叉树:红黑树,他的插入删除效率比其他序列容器高是因为不需要做内存拷贝和内存移动,而直接替换指向节点的指针即可。
  • Set和Vector的区别在于Set不包含重复的数据,且都是排好序的。Set和Map的区别在于Set只含有Key,而Map有一个Key和Key所对应的Value两个元素。
  • Map和Hash_Map的区别是Hash_Map使用了Hash算法来加快查找过程,但是需要更多的内存来存放这些Hash桶元素,因此可以算得上是采用空间来换取时间策略。
  • 可以将vector当作是一个特殊的栈,可以从栈底遍历到栈顶。
  • string,存放字符的容器,可像vector一样任意查找

常用函数

set常用函数:

set<int> s    定义一个set容器 类型为int型
s.begin()     返回指向第一个元素的迭代器
s.clear()     清除所有元素
s.count()     返回bool型,有返回1,无返回0
s.empty()     如果集合为空,返回true
s.end()       返回指向最后一个元素之后的迭代器,不是最后一个元素
s.erase()     删除集合中的元素
s.find()      返回一个指向被查找到元素的迭代器,如果没找到则返回end()
s.insert()    在集合中插入元素
s.size()      集合中元素的数目
s.swap()      交换两个集合变量

遍历set
set <int> a;
for ( set<int>::iterator it=a.begin(); it!=a.end(); it++ ) {
cout << *it << endl;
}

vector常用函数:size(),push_back(),pop_back()
string常用函数:length(),erase(),append()

string &erase(int pos = 0, int n = npos);//删除pos开始的n个字符,返回修改后的字符串

未完待续。。。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
Gotclue 发布了5 篇原创文章 · 获赞 0 · 访问量 144 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: