
C++ STL
benobug
这个作者很懒,什么都没留下…
展开
-
C++ STL nth_element——确定某一位置上的数应该是什么
头文件algorithm中有众多排序相关的函数,其中包括nth_element函数。nth_element()函数找到将[first, last)区间排序后的第n个元素,并将该元素置于第n个位置。函数原型template<class RandomAccessIterator>void nth_element(RandomAccessIterator first, RandomA...原创 2020-04-25 15:38:55 · 292 阅读 · 0 评论 -
C++ STL vector预分配空间——resize和reserve
vector的resize:既分配了空间,也创建了对象,会调用构造函数vector的reserve:reserve()表示容器预留空间,但不是真正的创建对象,需要通过insert()或push_back()等操作创建对象reserve()只修改capacity大小,不修改size大小,resize()既修改capacity大小,也修改size大小。因此,在只需要足够的空间而不需要生成对象时...原创 2020-04-23 16:42:04 · 11509 阅读 · 1 评论 -
C++ STL 如何快速合并两个链表list——splice方法
众所周知,在链表上进行插入操作所需要的时间为固定时间,只需要修改几个指针便可以完成插入操作,C++ 的STL为我们提供了list容器,当然也少不了合并两个list的方法,不是使用merge,而是使用list的方法splice,函数原型为void splice ( iterator position, list<T,Allocator>& x );void splice ( ...原创 2020-04-20 21:15:31 · 5502 阅读 · 0 评论 -
C++ STL 通过使用插入迭代器将复制数据的算法转换为插入数据的算法
STL提供的三种插入迭代器——back_insert_iterator、front_insert_iterator和insert_iterator来提供STL算法的通用性。很多STL函数都与copy()相似,将结果发送到输出迭代器指示的位置(也就是dice.begin()开始的位置)copy(casts, casts + 10, dice.begin());这些值将覆盖dice中以前的内容,...原创 2020-04-11 21:54:08 · 237 阅读 · 0 评论 -
C++ STL 反向迭代器rbegin()和end()到底指向了容器的哪里?
C++ STL中为我们提供了很方便的迭代器——反向迭代器,其功能是:对reverse_iterator执行递增操作将导致指向数据的指针被递减。为什么不直接对常规迭代器进行递减呢?主要原因是为了简化对已有的函数的使用。假设要反向显示dice容器的内容,可以使用copy()和ostream_iterator来将内容复制到输出流中:ostream_iterator<int, char> o...原创 2020-04-11 20:59:11 · 1462 阅读 · 0 评论 -
C++ 关于ostream_iterator输出流迭代器实现屏幕输出以及istream_iterator输入流迭代器
ostream_iterator是流迭代器,是一个类模板,使用时要添加< iterator>和< iostream>库文件,声明元素类型,构造函数第一个参数为输出流对象,可以是cout,也可以是文件等;第二个参数是分隔符,放到输出流的时候,每放一个元素,就后面添加一个分隔符。#include <iostream>#include <iterator&g...原创 2020-03-19 22:21:45 · 510 阅读 · 0 评论 -
C++ STL bitset类用法
C++提供的bitset类方便我们进行各种位操作,使用时需包含头文件< bitset>,bitset类位于std命名空间中template <size_t N>class bitset{ ...};size_t 可看作 unsigned int。将 bitset 实例化时,N是非类型模板参数, 必须是一个整型常数,指明了实例化的bitset占用多少个位。...原创 2020-04-11 15:45:53 · 559 阅读 · 0 评论 -
C++ STL list容器定位到指定位置的方法
list容器的迭代器不能像vector那样随机访问(直接加上数字就能定位到目标位置),但是要定位到指定的位置其实不需要我们自己编写函数来自增迭代器,STL库给我们提供了现成的方法,那就是调用advance函数auto iter = begin(data);std::advance(iter, 9); // Increase iter by 9data.insert(iter, 3, 88);...原创 2020-04-11 11:55:18 · 7624 阅读 · 1 评论