C/C++程序基础 (十一)标准模板库

2018-06-17 20:56:04来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

  1. 标准模板库
    • 标准模板库在标准函数库的定位
    • 迭代器(类似指针)保证算法(常用算法)和容器(数据结构)的结合。
  2. vector的实现
    • 底层实现是动态数组,所以支持随机访问。
    • 内部是动态数组,随着insert和push_back插入元素而自动扩容(类似realloc),一般扩充为原来的2倍。
    • erase操作删除某个迭代器(vector<T>::iiterator)指向的元素,并将迭代器前移。
    • size()和capacity()区别:前者是元素数量,后者是内存大小。
    • vector<T>:: size_type -> allocator<T>::size_type -> allocator<T>::_SIZE -> size_t -> unsigned int
  3. list和vector区别
    • vector为连续内存空间,支持随机存取,但capacity调整开销大。
    • list为不连续空间,不支持随机存取,但插入、删除更方便。
  4. deque和vector的区别
    • deque为双向队列,连续内存空间,支持随机存取。有pop_front()和push_front()操作,适用于首位两端进行插入、删除操作。
    • vector支持预先设置capacity。reserve()方法调整内存空间,一定程度上提高了大量增加数据时的效率。
  5. queue和stack区别
    • stack:后进先出,容器适配器。默认使用deque
    • queue:先进先出,容器适配器。默认使用deque
  6. set和map
    • set:Key和value值相同,聚合(associative)容器,通过key访问,内部有序。
    • map:key和value值(通过pair的first和second区分)可以不同,聚合(associative)容器,通过key访问,内部有序。
    • 实现:均为平衡二叉树,具体是红黑树。
  7. map和hashmap区别
    • map:红黑树。key有序。
    • hashmap:哈希表(vector保存桶,list处理溢出【有序】)。存取操作复杂度为1。
    • 补充:哈希表(hash函数直接定址,解决冲突):通过初始容量加载因子(0.75)
  8. 智能指针auto_ptr
    • 引用计数:随着复制构造而递增引用。随着赋值操作,递减左值,递增右值。析构时,递减引用。
    • 引用计数为0时,删除基础对象。
    • 重载->和*操作符。
    • 使用限制(一个对象一个智能指针【便于管理】,不可以按值传递,不支持数组)
  9. 函数对象
    • 重载了()的对象,可以像函数一样使用。
    • bind1st和bind2nd用于把二元函数对象转化为一元函数,前者固定第一个参数,后者固定第二个。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:套接字和标准I/O缓冲区

下一篇:ACM练习中关于LCS的题目