
C/C++ STL
文章平均质量分 74
SAYA_
************
展开
-
ptr_fun
头文件:ptr_fun是将一个普通的函数适配成一个仿函数(functor), 添加上argument_type和result type等类型,它的定义如下:[cpp] view plaincopyprint?templateclass _Arg1, class _Arg2, class _Result> inline转载 2015-11-04 09:52:15 · 808 阅读 · 0 评论 -
C++常见容器概述
以前的11个容器分别是deque,list,queue,priority_queue,stack,vector,map,multimap,set,multiset,bitsetC++11新增:forward_list,unordered_map,unordered_multimap,unordered_set,unordered_multiset原创 2015-10-24 01:42:48 · 901 阅读 · 0 评论 -
valarray
valarray类是由头文件支持的。顾命思义,这个类用于处理数值最好不过了。它是一个模板类,下面介绍它的常用方法。#include#includeusing namespace std;int main(){ int a[5] = { 1,2,3,4,5 }; valarray v1;//an array of int, size 0 valarray v2(5);//an a原创 2015-09-26 21:23:59 · 754 阅读 · 1 评论 -
vector的reserve()和resize()
vector 的reserve()增加了vector的capacity,但是它的size没有改变!resize()改变了vector的capacity同时也增加了它的size!reserve(n) 预分配n个元素的存储空间。reserve()可按以下实现:如果n大于容器现有的容量(即capacity()),则需要在自由内存区为整个容器重新分配一块新的更大的连续空间,其大小为n*原创 2015-10-24 01:05:20 · 722 阅读 · 0 评论 -
迭代器
1.迭代器(1)迭代器的本质循环结构有两种控制方式:标志控制和计数控制。迭代器可以把这两种标志控制的循环统一为一种控制方法:迭代器控制,每一次迭代操作中对迭代器的修改就等价于修改标志或计数器。在STL中,容器的迭代器被作为容器元素对象或者I/O流中的对象的位置指示器,因此可以把它理解为面向对象的指针——一种泛型指针或通用指针,不依赖于元素的真实类型。迭代器的概念如图所示:set转载 2015-10-18 07:58:05 · 789 阅读 · 0 评论 -
const_iterator
const_iterator对象,它可以指向别的元素,但不能修改其指向的元素,可以不初始化#include#includeusing namespace std;int main(){ int a[5] = { 1,2,3,4,5 }; vector v(a,a+5); vector::const_iterator const_it1;//right vector::co原创 2015-10-23 23:44:38 · 506 阅读 · 0 评论 -
声明map对象时你不知道的事
在用map容器写一段程序时,发现个问题请看下面代码map m;m['a'];cout 这输出什么呢?如果用普通数据类型这么做呢?#include#includeusing namespace std;int main(){ int a; cout << a<<endl;//error未引用的局部变量 bool b; cout << (int)b <<原创 2015-11-06 21:41:43 · 1408 阅读 · 1 评论 -
pair 与 make_pair
// pair简单讲就是将两个数据整合成一个数据// 本质上是有first, second两个成员变量的结构体//make_pair就是构造pair对象的意思#include#include#includevoid test_pair(){ // pair两种构造的方法 // 方法1 std::pair("This is a StringTest0.", 9.7); // 浮点转载 2015-11-05 00:07:37 · 856 阅读 · 0 评论 -
STL 中 mem_fun 和 mem_fun_ref 的用法
怎么对容器中的所有对象都进行同一个操作?我们可能首先想到的是用循环来实现。比如有如下的一个类:class ClxECS{public: int DoSomething() { // 这里以输出一句话来代替具体的操作 cout << "Output from method DoSomething!" << endl; return 0; };}; 现在定义如下一个转载 2015-11-04 00:39:54 · 685 阅读 · 0 评论 -
rbegin()和rend()
rbegin()==end()rend()==begin()但是注意rbegin,rend的类型和begin,end不一样前者是反向迭代器(reverse_iterator),后者是迭代器(iterator)对reverse_iterator执行递增将导致它递减来看看实际使用:#include#includeusing namespace std;int main()原创 2015-10-24 02:24:08 · 5485 阅读 · 1 评论 -
STL排序详解
详细解说 STL 排序(Sort)0 前言: STL,为什么你必须掌握1 STL提供的Sort 算法1.1 所有sort算法介绍1.2 sort 中的比较函数1.3 sort 的稳定性1.4 全排序1.5 局部排序1.6 nth_element 指定元素排序1.7 partition 和stable_partition2 Sort 和容器3转载 2015-10-18 07:55:15 · 790 阅读 · 0 评论 -
内存管理与效率
1.使用reserve()函数提前设定容量大小,避免多次容量扩充操作导致效率低下。 关于STL容器,最令人称赞的特性之一就是是只要不超过它们的最大大小,它们就可以自动增长到足以容纳你放进去的数据。(要知道这个最大值,只要调用名叫max_size的成员函数。)对于vector和string,如果需要更多空间,就以类似realloc的思想来增长大小。vector容器支持随机访问,因此为了转载 2015-10-16 14:01:29 · 549 阅读 · 0 评论 -
bind1st 和 bind2nd 解析
头文件: 看这篇文章前,请先看 ptr_fun的使用 和 STL 中 mem_fun 和 mem_fun_ref 的用法 bind1st和bind2nd函数把一个二元函数对象绑定成为一个一元函数对象。 但是由于二元函数对象接受两个参数,在绑定成为一元函数对象时需要将原来两个参数中的一个绑定下来。 也即通过绑定二元函数对象的一个参数使之成为一元函数对象原创 2015-11-04 09:59:19 · 838 阅读 · 0 评论