STL
文章平均质量分 70
zhongkeli
这个作者很懒,什么都没留下…
展开
-
STL中提供-二分查找算法(binary_search lower_bound upper_bound equal_range)
STL包含四种不同的二分查找算法,binary_search lower_bound upper_bound equal_range.他们作用的range是已sorted。binary_search试图在已排序的[first, last)中寻找元素value。如果[first, last)内有等价于value的元素,它会返回true,否则返回false,它不返回查找位置。转载 2011-10-18 09:09:26 · 11331 阅读 · 0 评论 -
标准模板库(STL)学习探究之bitset容器
C++ Bitset (位集合) C++ Bitsets给程序员提供一种位集合的数据结构。Bitsets使用许多二元操作符,比如逻辑和,或等。bitset类模板支持有效的的固定大小位设置操作,vector模板规范支持动态大小的位字符串。函数列表:Constructors 创建新bitsets Operators 比较和赋值bitsets any() 如果有任何一转载 2011-11-07 20:20:54 · 531 阅读 · 0 评论 -
unique 用法
template ForwardIterator unique ( ForwardIterator first, ForwardIterator last );template ForwardIterator unique ( ForwardIterator first, ForwardIterator last, Binary原创 2011-11-05 20:10:27 · 3467 阅读 · 0 评论 -
STL中的约束器相关总结
摘要: STL里有仿函数的概念,而在应用仿函数的时候,仿函数与仿函数之间的适配引出了约束器的概念。这一节主要叙述一下一元函数对象基类unary_function、二元函数对象基类binary_function,以及两个约束器binder1st与binder2nd,同时给出一个场景,分析实现原理。1:template class Arg, class Result> struct转载 2011-11-05 21:34:38 · 713 阅读 · 0 评论 -
remove_if用法
remove_iffunction templatetemplate ForwardIterator remove_if ( ForwardIterator first, ForwardIterator last, Predicate pred );Remove e原创 2011-11-06 14:17:03 · 716 阅读 · 0 评论 -
replace_if 用法
replace_iffunction templatetemplate void replace_if ( ForwardIterator first, ForwardIterator last, Predicate pred, const T& new_value );Replace原创 2011-11-06 14:01:20 · 1937 阅读 · 0 评论 -
stable_partition用法
stable_partitionfunction templatetemplate BidirectionalIterator stable_partition ( BidirectionalIterator first, BidirectionalIterator la原创 2011-11-06 09:55:52 · 1461 阅读 · 0 评论 -
transform用法
transformfunction templatetemplate OutputIterator transform ( InputIterator first1, InputIterator last1, OutputIterator result, UnaryOperator op );t原创 2011-11-05 21:07:15 · 2259 阅读 · 0 评论 -
replace
replacefunction templatetemplate void replace ( ForwardIterator first, ForwardIterator last, const T& old_value, const T& new_value );Replace valu原创 2011-11-05 15:14:31 · 506 阅读 · 0 评论 -
标准模板库(STL)学习探究之Maps容器
C++ Maps(关联容器) map类定义了一个关联容器,并且在容器中使用唯一的关键字(任何两个元素的键都不相同)来映射相应的值。从本质上来说,关键字就是值的名字。在map对象中存储了一个值之后,就可以通过关键字来获得它。map对象是一系列关键字/值的匹配对。 map的主要功能在于:只有你知道了一个值的关键字,就能够找到这个值。例如,定义一个map对象m,在该对象中使用人名作为关转载 2011-11-08 20:14:46 · 505 阅读 · 0 评论 -
标准模板库(STL)学习探究之Multimap容器
C++ Multimaps(多映射)C++ Multimaps和maps很相似,但是MultiMaps允许重复的元素。(具体用法请参考map容器)函数列表:begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 count() 返回一个元素出现的次数 empty() 如果multimap为空则返回真 end() 返回一个指向multimap末尾的迭代器转载 2011-11-08 21:00:44 · 534 阅读 · 0 评论 -
list
各个容器有很多的相似性。先学好一个,其它的就好办了。先从基础开始。先看看他们的分类吧标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一个重型字符串。非标准关联容器hash_set、hash_multiset、hash_m转载 2011-11-10 09:36:47 · 467 阅读 · 0 评论 -
标准模板库(STL)学习探究之Double Ended Queue容器
C++ Double Ended Queue(双向队列)双向队列和向量很相似(具体用法可参看vector容器),但是它允许在容器头部快速插入和删除。函数列表:Constructors 创建一个新双向队列 Operators 比较和赋值双向队列 assign() 设置双向队列的值 at() 返回指定的元素 back() 返回最后一个元素 begin() 返回指向第一个转载 2011-11-08 19:29:29 · 547 阅读 · 0 评论 -
标准模板库(STL)学习探究之Queue容器
C++ Queue(队列) queue是容器配接器C的一个示例,容器配接器C将一些基础容器转换成类C的容器。容器配接器queue、stack、priority_queue——与标准模板库的其他处理是截然不同的。他们的方法和定义要调用基础容器类的方法。 queue的基础类可以为list,list类中有size,empty,push_back,pop_front,front,bac转载 2011-11-08 21:04:56 · 473 阅读 · 0 评论 -
标准模板库(STL)学习探究之List容器
C++ Lists(链表) Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢. 函数列表如下:assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 empty() 如果list是空的则返回true end()转载 2011-11-08 19:54:45 · 445 阅读 · 0 评论 -
STL中容器的几个容易混淆的成员函数-size, capacity, resize, reserve
1. container::size()用于表示容器中有几个元素,用n来表示, 并不能表示容器现有的内存最多能存多少个元素。 2. container::capacity()用于表示容器现有的内存最多能够存放多少个元素, 用m来表示。 如果想要计算容器现有的内存还能够存放几个元素 = capacity() - size(); 3. container转载 2011-11-09 09:47:42 · 631 阅读 · 0 评论 -
标准模板库(STL)学习探究之Priority Queue容器
C++ Priority Queue(优先队列)C++优先队列类似队列,但是在这个数据结构中的元素按照一定的断言排列有序。它的头文件为。由于适配器不支持迭代,一个 priority_queue 将有没有关联的迭代器。函数列表:empty() 如果优先队列为空,则返回真 pop() 删除第一个元素 push() 加入一个元素 size() 返回优先队列中拥有的元素的个数转载 2011-11-08 21:06:23 · 558 阅读 · 0 评论 -
标准模板库(STL)学习探究之Set容器
C++ Sets(集合) set和map一样属于关联容器,set是集合,map是映射。若元素类型为int,double,string就会自动进行(默认是升序)排序(使用平衡二叉树来实现),使用自定义类型而未定义比较运算符就不能自动排序了。set容器不支持随机访问。函数列表:begin()返回指向第一个元素的迭代器clear()清除所有元素count()返回某个值元素的个数转载 2011-11-08 21:01:39 · 661 阅读 · 0 评论 -
remove 用法
removefunction templatetemplate ForwardIterator remove ( ForwardIterator first, ForwardIterator last, const T& value );Remove value from原创 2011-11-05 14:40:54 · 3353 阅读 · 0 评论 -
lower_bound 用法
template ForwardIterator lower_bound ( ForwardIterator first, ForwardIterator last, const T& value );template ForwardIterator lower_bound ( ForwardIterator firs原创 2011-11-05 10:05:38 · 3261 阅读 · 0 评论 -
string类用法
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 首先,为了在我们的程序中使用string类型转载 2011-11-02 18:35:50 · 571 阅读 · 0 评论 -
multimap排序
如果键值是string型,直接输出就可以了,multimap是排好序了的,如果你要用C风格字符串,就自定义一个排序规则,需要在创建 multimap的时候做:#include #include #include using namespace std;struct cstrcmp_less{ bool operator () (const char* a, const ch转载 2011-11-02 12:56:12 · 11965 阅读 · 0 评论 -
basic_string::c_str() 与 basic_string::data() 区别
basic_string::c_str() 与 basic_string::data() 区别const value_type *c_str( ) const;const value_type *data( ) const; data只是返回原始数据序列,没有保证会用traits::eos(),或者说'\0'来作字符串结束. 当然,可能多数实现都这样做了转载 2011-11-02 18:58:05 · 514 阅读 · 0 评论 -
set排序可以替代 multimap排序
struct cmp { bool operator () (pairp1,pairp2) { if (p1.first == p2.first)return p1.second elsereturn p1.first } }; int main() { set , cmp> xx; xx.inser转载 2011-11-02 10:43:19 · 1213 阅读 · 0 评论 -
请问这个ncount为什么是输出0呢,而且find那部分会出错
修改前#include#include#include#includeusing namespace std;struct node{int key;int value;bool operator==(node *&p){return p->value==value;}};int main(){listp;node *a1=new node;a1->key=1;a1原创 2011-11-17 10:42:37 · 1813 阅读 · 0 评论 -
STL容器里存放对象还是指针
一.问题的引出:容器可以存放对象,可以存放指针,这里要谈的是两者的使用问题。就是什么时候存放对象更好,什么时候存放指针更好? 二.问题的分析过程:1. 首先说下stl容器的工作方式 对于内建类型(int float char等),容器的工作方式是纯粹的位拷贝,这里没有什么需要多说的。对于自定义的对象,容器容纳了对象(比如通过insert或pu转载 2011-11-17 09:47:20 · 1685 阅读 · 0 评论 -
关于stl::vector中存储带指针类型成员的结构体指针
最近用到vector中存储结构体:struct sProc{// 进程IDint pid;// 进程状态int stat;// 状态为0次数int count;char *path;sProc(){pid = -1;stat = 0;count = 0;path = NULL; //关键在此出}};转载 2011-11-17 09:31:40 · 5109 阅读 · 0 评论 -
adjacent_find
#include#include#include#includeusing namespace std;class student{ public: int no; string strName; student(int no,string strName){ this->no=no;原创 2011-10-19 21:09:41 · 519 阅读 · 0 评论 -
条款14:使用reserve来避免不必要的重新分配
关于STL容器,最神奇的事情之一是只要不超过它们的最大大小,它们就可以自动增长到足以容纳你放进去的数据。(要知道这个最大值,只要调用名叫max_size的成员函数。)对于vector和string,只要需要更多空间,就以realloc等价的思想来增长。这个类似于realloc的操作有四个部分:分配新的内存块,它有容器目前容量的几倍。在大部分实现中,vector和string的容量每次以转载 2011-11-02 21:15:45 · 648 阅读 · 0 评论 -
STL string 类用法总结
1.String::append与string::assignstring& append ( const string& str );string& append ( const string& str, size_t pos, size_t n );string& append ( const char* s, size_t n );string& append ( const ch原创 2011-11-02 21:49:22 · 10091 阅读 · 0 评论 -
max_element
min_elementfunction templatetemplate ForwardIterator min_element ( ForwardIterator first, ForwardIterator last );template ForwardIterator min_element ( ForwardIterator first,原创 2011-11-05 10:27:34 · 2670 阅读 · 0 评论 -
equal_range用法 暂时有错
STL中equal_range使用的问题 定义了结构 struct A { double a; double b; }然后定义了 一个向量 vector avector; 这个向量按照a的大小排序。现在我想采用算法 pair ::iterator, vector ::iterator > it; it = equal_range(avector.b原创 2011-11-03 14:54:10 · 928 阅读 · 0 评论 -
equal用法
template bool equal ( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2 );template bool equal ( InputIterator1 first1, InputIterator1 last1, Inpu原创 2011-11-03 09:56:26 · 3500 阅读 · 0 评论 -
for_each用法
template Function for_each (InputIterator first, InputIterator last, Function f);Apply function to rangeApplies function f to each of the elements in the range [first,last).The原创 2011-11-03 16:12:13 · 846 阅读 · 0 评论 -
count用法
#include#include#includeusing namespace std;class Student{public: int No; string strName; int grade; Student(int No,string strName,int grade):No(No),strName(strName),grade(grade){}; bool ope原创 2011-11-03 09:07:26 · 811 阅读 · 0 评论 -
fill用法
template void fill ( ForwardIterator first, ForwardIterator last, const T& value );#include#include#includeusing namespace std;struct info{ int key; int value; info(int key,int value):key(ke原创 2011-11-03 15:11:19 · 2712 阅读 · 0 评论 -
count_if用法
template typename iterator_traits::difference_type count_if ( ForwardIterator first, ForwardIterator last, Predicate pred );Return number of elements in range satisfying conditi原创 2011-11-03 09:23:22 · 773 阅读 · 0 评论 -
priority_queue例子
#include#includeusing namespace std;class node{public: int key; int value; bool operator()(node a,node b){ return a.value>b.value; } node(){} node(int key,int value):key(key),value(value)原创 2011-11-13 20:14:26 · 859 阅读 · 0 评论