c++之STL入门学习与提高
文章平均质量分 86
课程介绍C++的STL知识,旨在和大家一起探讨学习,共同进步!
taotaoahui
这个作者很懒,什么都没留下…
展开
-
STL_算法(30)_Heap算法
堆排序算法(heapsort)make_heap()push_heap()pop_heap()sort_heap()(大根堆)从堆中取一个数的话,始终是取得是最大的。反之就是小根堆。#include#include#includeusing namespace std;int main(){ vector ivec; for(int i转载 2016-10-07 20:00:28 · 457 阅读 · 0 评论 -
STL_算法(29)_根据第n个元素排序
nth_element(b, n, e)nth_element(b, n, e,p)对比:partion()算法转载 2016-10-06 12:30:17 · 537 阅读 · 0 评论 -
vector resize和reverse区别
reserve是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用容器内的元素,因此当加入新的元素时,需要用push_back()/insert()函数。resize是改变容器的大小,并且创建对象,因此,调用这个函数之后,就可以引用容器内的对象了,因此当加入新的元素时,用operator[]操作符,或者用迭代器来引用元素对象。再者,两个函数的形式是有区别的,reserve函转载 2016-09-17 15:49:12 · 2204 阅读 · 0 评论 -
STL_算法(28)_局部排序
partial_sort(b, se, e);partial_sort(b, se, e, p);partial_sort_copy(sb, se, db, de);partial_sort_coyp(sb, se, db, de, p);#include#include#include#includeusing namespace std;int main(){转载 2016-09-10 16:51:14 · 578 阅读 · 0 评论 -
STL_算法(27)_对所有元素排序sort(b, e) sort(b, e, p) stable_sort(b, e) stable_sort(b, e, p)
sort(b, e)sort(b, e, p)stable_sort(b, e)stable_sort(b, e, p)注意:不适用于list容器,list有成员函数sort()STL算法- 排序算法sort() make_heap()stable_sort() push_heap()partial_sort() pop_heap()part转载 2016-09-09 09:52:29 · 675 阅读 · 0 评论 -
STL_算法(26)_重排和分区 random_shuffle() ;partition() ;stable_partion()
random_shuffle()partition()stable_partion()#include#include#includeusing namespace std;int main(){ vector ivec; for(int i = 0; i <= 9; i++) ivec.push_back(i); for(vector::iterator原创 2016-09-03 09:14:14 · 525 阅读 · 0 评论 -
STL_算法(25)_逆转和旋转 revers() 、reverse_copy()、rotate()、rotate_copy()、
STL_算法(25)_逆转和旋转 revers() 、reverse_copy()、rotate()、rotate_copy()、STL变序性算法revers() 、reverse_copy()、rotate()、rotate_copy()、next_permutation()prev_permutation()random_shuffl原创 2016-09-02 21:35:55 · 766 阅读 · 0 评论 -
STL_算法(24)_删除_(3)uinique() unique_copy()
remove()remove_if()remove_copy()// 删除连续的重复的算法,只留下唯一的uinique()unique_copy()unique(b, e)unique(b, e, p)unique_copy(b1, e1, b2)unique_copy(b1, e1, b2, p)注意:1,没有unique_if()转载 2016-08-31 11:23:35 · 764 阅读 · 0 评论 -
STL_算法(24)_删除_(2)
删除性算法:remove()remove_if()remove_copy()remove_copy_if()unique()unique_copy()今天学习:remove_copy()remove_copy_if()// 原空间的数据复制到目标空间中去,在复制工程中删除一些数据#include#include#include#includ原创 2016-08-29 11:35:16 · 614 阅读 · 0 评论 -
STL_算法(23)_删除_(1)
remove()remove_if()remove_copy()remove_copy_if()unique()unique_copy()注意:1, 并不是真正的删除,而是把后面的元素向前移动,覆盖被删除元素;2,返回新的逻辑终点。#include#include#includeusing namespace std;int main()原创 2016-08-28 09:17:01 · 679 阅读 · 0 评论 -
STL_算法(22)_ STL_算法_替换算法
replace(b, e, ov, nv)replace_if(b, e, p, v)// 一边复制一遍替换replace_copy(b1, e1, b2, ov, nv)replace_copy_if(b1, e1, b2, p, v) // 带有一个函数对象或者规则#include#include#include//#includeusing n转载 2016-08-22 00:31:10 · 500 阅读 · 0 评论 -
STL_算法(21)_ STL_算法_填充新值
STL_算法_填充新值fill(b, e, v)fill(b, n, v)generate(b, n, p)generate_n(b, n, p)#include#include#include#include//#includeusing namespace std;int main(){ list slist; slist.push_ba原创 2016-08-21 22:23:15 · 768 阅读 · 0 评论 -
STL_算法(20)_ 交换算法 swap_range(b, e, b2)
swap_ranges(b, e, b2)注意:下列两种方法也是交换算法1,容器的swap()成员函数 方法快2,赋值操作交换算法对所有容器适用#include#include#include#includeusing namespace std; int main(){ vector ivec; dequeideq; for (in转载 2016-08-19 10:13:31 · 1249 阅读 · 0 评论 -
STL算法(19)——for_each()和transform()的比较
STL-算法 修改性算法:for_each() generate()copy() generate_n()copy_backwards() replace()transform() replace_if()merge() replace_copy()swap_ranges() replace_copy_if()fill()fill_n()for_ea转载 2016-08-19 08:37:59 · 634 阅读 · 0 评论 -
STL算法(18)-transform()
预定义的函数对象negate() equal_to()plus() not_equal_to()minus() less()multiplies() greater()divides() less_equal()modulus() greater_equal()logical_not() logical_and()logical_or() #include#i转载 2016-08-18 09:57:47 · 619 阅读 · 0 评论 -
STL_算法(17)_排列组合 next_permutation() perv_permutation()
next_permutation()prev_permutation()#include#include#include// 排列组合开始之前一定要先排序using namespace std;int main(){ vector ivec; ivec.push_back(1); ivec.push_back(2); ivec.push_back(3); fo转载 2016-08-17 07:55:51 · 634 阅读 · 0 评论 -
STL_算法(16)_复制元素 copy() copy_backward()
copy()copy_backward()以上两个对所有容器都适用的注意:1, 没有copy_if()算法,可以使用remove_copy_if()算法;2,复制过程中要逆转元素次序,使用reverse_copy()算法;3,把容器内所有元素赋值给另一个容器,要使用赋值操作符或者容器的assign()成员函数;4,复制过程中删除某些元素,使用remove_copy()和转载 2016-08-16 23:02:10 · 649 阅读 · 0 评论 -
STL算法(15)——区间的比较
STL算法——区间的比较:equal(b,e,b2) // 用来比较两个容器中的数据是否相等equal(b,e,b2,p)mismatch(b,e,b2) // 用来查找两个容器中第一个不相等的数据mismatch(b,e,b2,p)lexicographical_compare(b,e,b2,e2) //用来比较第一个区间是否比第二个区间小lexic转载 2016-08-16 08:42:40 · 848 阅读 · 0 评论 -
STL算法(14)——for_each()
for_each(b,e,p)// 对容器中的数据进行遍历 b和e是一对儿迭代器 p是一个函数或者是函数对象 使用for_each()算法遍历数据使用for_each()和函数对象修改数据使用for_each()返回值#include#include#includeusing namespace std;void print(int elem){ cout <<转载 2016-08-15 09:16:02 · 799 阅读 · 0 评论 -
c++之STL(13) STL 算法 - 查找算法(6)binary_search(b,e,v) binary_search(b,e,v,p) includes(b,e,sb,se) include
binary_search(b,e,v)binary_search(b,e,v,p)includes(b,e,sb,se)includes(b,e,sb,se,p)STL 查找算法find()find_if()search_n()search()find_end()find_first_of()adjacent_fin转载 2016-08-11 07:42:22 · 835 阅读 · 0 评论 -
c++之STL(13) STL 算法 - 查找算法(5)adjacent_find(b,e) adjacent_find(b,e,p)
查找两个连续相等的或者是连续两个符合谓词规格的。STL 查找算法find()find_if()search_n()search()find_end()find_first_of()adjacent_find()已序区间查找算法binary_search()includes()lower_bound()upper_bound()#include转载 2016-08-09 07:53:33 · 436 阅读 · 0 评论 -
c++之STL(13) STL 算法 - 查找算法(4)find_first_of(b,e,sb,se) find_first_of(b,e,sb,se,bp)
find_first_of(b,e,sb,se) find_first_of(b,e,sb,se,bp)使用逆向迭代器 没有find_last_of算法STL 查找算法find()find_if()search_n()search()find_end()find_first_of()adjacent_find()string 查找函数和S转载 2016-08-08 22:28:57 · 593 阅读 · 0 评论 -
c++之STL(13) STL 算法 - 查找算法(3)search() find_end()
search() 是从前面找find_end() 是从后门找注意:两个算法是一对,第二个算法叫search_end(),但是被命名为find_end();两个都是用来在容器中查找,连续的数据在容器中是否存在转载 2016-08-05 07:20:50 · 1298 阅读 · 0 评论 -
c++之STL(13) STL 算法 - 查找算法(2)search_n() search_n(b, e, c, v) search_n(b, e, c, v, p)
search_n() 用来查找连续的n个匹配的数值 或者 加谓词search_n(b, e, c, v)search_n(b, e, c, v, p)注意:该方法的第二种形式应该是search_n_if(b, e, c, p)#include#include#include//#include//using namespace std;int mai转载 2016-08-04 22:53:55 · 660 阅读 · 0 评论 -
c++之STL(13) STL 算法 - 查找算法(1)
常用的查找算法如下:find()find_if()//search_n()search()find_end()find_first_of()adjacent_find()//这两种方法通用,对所有容器试用,但是查找效率慢,是线性查找find() 此复杂度是线性复杂度find_if() 此复杂度是线性复杂度注意:1,如果是已序区间,可以转载 2016-08-04 08:33:51 · 719 阅读 · 0 评论 -
c++之STL(12) STL 算法 - 最小值和最大值
min_element(b , e)min_element(b , e, op)max_element(b , e)max_element(b , e, op)//op 是函数,函数对象,一元谓词 #include#include//#includebool absLess(int elem1, int elem2){ return abs(ele原创 2016-08-03 19:22:57 · 4494 阅读 · 0 评论 -
c++之STL(11) 算法- 元素计数
countcount_if关联容器的等效成员函数:set.countmultiset.countmap.countmultimap.count转载 2016-08-03 00:03:05 · 680 阅读 · 0 评论 -
c++之STL(10)STL 算法
非变序算法:计数算法:count、count_if搜索算法:search、find、find_if、find_first_of.......比较算法:equal、mismatch、lexicographical_compare.......变序算法:删除算法:remove、remove_if、remove_copy........修改算法:for_each、tran转载 2016-08-01 21:56:50 · 668 阅读 · 0 评论 -
c++之STL(9)重载函数调用操作符 函数对象 谓词
重载函数调用操作符函数对象:定义了调用操作符的类,其对象称为“函数对象”一元函数对象一元谓词二元函数对象二元谓词#include//#include#include#includeusing namespace std;//class absInt{////public:// int operator()(int val){// // }转载 2016-07-28 08:45:45 · 677 阅读 · 0 评论 -
c++之STL(8)优先级队列 priority_queue
本文是听的网络课程,而记录下来的学习心得。自适应容器(容器适配器):不能使用list特点:数据中最大的放的是队首从队首拿出来的数据始终是最大的两种优先级队列:最大值优先级队列、最小值优先级队列优先级队列适配器 STL priority_queuepriority_queue> pq;priority_queue> pq;pq.empty()p原创 2016-07-28 00:53:55 · 748 阅读 · 0 评论 -
C++之STL(7) queue队列
队列:FIFO先进先出自适应器(容器适配器)不能用vector做queue>queue>q.empty();q.size();q.front();q.back();q.pop();q.push(item);原创 2016-07-27 09:00:56 · 639 阅读 · 0 评论 -
C++之STL(6)之 map 与 multimap 关联容器
#include#include#includeusing namespace std;int main(){ map a; multimap ma; // 插入 3种方法 key键 value 值 a.insert(map::value_type(1, "One")); a.insert(map::value_type(2原创 2016-07-27 00:03:27 · 627 阅读 · 0 评论 -
C++之STL(5)之 set 与 multiset
set(集) multiset(多集) 两者都是为了保存大量数据的,但是不同的是 前者 保存的数据不重复,而后者 是允许 重复的。其保存的数据非常快,尤其是大量数据的时候。但其有一个缺点:就是数据插入的时候比顺序容器慢些(vector 、 list 、 deque)。基本操作有:inset;count 和 find;erase注意:不能通过find进行修原创 2016-07-25 23:53:36 · 415 阅读 · 0 评论 -
c++ STL(4)之 deque类
deque是一个动态数组;与vector类似;deque可以在数组开头和末尾插入和删除元素,但是vector只能在末尾插入和删除元素。原创 2016-07-25 22:45:07 · 633 阅读 · 0 评论 -
c++之STL(3) Vector容器
vector是一个动态数组,是一个类模板(class template)vector对象的定义和初始化vcotor对象的操作vector::size_typevector下标操作不添加元素//#include#include//#includeusing std::vector;using std::string;using std::cout;using原创 2016-07-21 09:22:32 · 590 阅读 · 0 评论 -
c++之STL string(2)复制,迭代,连接,查找,截短,字符串反转,大小写转换
STL string 的常用操作主要有以下五种:复制,迭代,连接,查找,截短;STL string 的常用算法有:字符串反转,大小写转换;原创 2016-07-18 09:23:12 · 2659 阅读 · 0 评论 -
标准模板库STL简介(1)
其实,STL就是数据结构和算法。主要就是三个部分一:STL 容器顺序容器:std::vector std:deque std::list关联容器: std::set std::multiset set::map std::multimap二: STL 迭代器前向迭代器 双向迭代器 随机访问迭代器 三:STL算法std::fi原创 2016-07-15 09:01:05 · 540 阅读 · 0 评论 -
STL string
/* STL string c++字符串*/#include #include #include using namespace std;#include int main(){ char name[20]; // C语言 的字符串 char *name1 = "dskfdsf"; // // C语言 的字符串 // c++字符串 //using namespac原创 2016-04-21 21:43:50 · 409 阅读 · 0 评论