C++标准库
2014-01-11 22:38
260 查看
C++标准库,趁现在整理一下。
一.字符串流stringstream
二.顺序容器;(vector,list,deque)
2.1容器定义的类型别名
2.2 begin和end成员
c.begin(),c.end(),c.rbegin(),c.rend()返回迭代器
2.3插入一段元素
2.4容器大小操作
2.5访问元素
2.6删除元素
2.7赋值与swap
2.8list特有算法
三.string
string享有顺序容器的大多数操作,这里只总结一下string特有的。
1.subter,append,replace
2string的查找操作
四.容器适配器
1.stack
2队列和优先队列
五.关联容器
1.map
1.1map定义类型
1.2map中添加元素
1.2map中的insert
1.3map中的查找与删除
2.set
set与map类似,但只有一个键,没有对应的值
3.multimap与multiset
六.泛型算法
1.accumulate(numeric头文件)
2.fill、fill_n
3.插入迭代器back_iterator
4.copy()
5.去重unique
6.iostream迭代器
一.字符串流stringstream
string line,word; while(getline(cin,line)) { istringstream stream(line); while(stream>>word){ //do something } }
int val1=1,val2=2; oistringstream format; format<<val1<<val2; istringstream in(format.str()); string tmp; in>>val1>>val2;
二.顺序容器;(vector,list,deque)
2.1容器定义的类型别名
size_type iterator,const_iterator,reverse_iterator,const_reverse_iterator differenc_type value_type reference const_reference
2.2 begin和end成员
c.begin(),c.end(),c.rbegin(),c.rend()返回迭代器
2.3插入一段元素
c.push_back() c.push_front()//只适用于list和deque c.insert(p,t)/(p,n,t)/(p,b,e)//在p指向的元素前面插入t/插入n个t/插入b,e所指之间的数
2.4容器大小操作
c.size(); c.max_size()//返回最多容纳元素个数 c.empty(); c.resize(n);//调整容器大小,如果n<c.size()则删除多余元素。
2.5访问元素
c.back();//返回最后一个元素的引用 c.front(); c.at();//检查容器是否越界
2.6删除元素
c.erase(p);//删除p所指的元素,返回后面的元素的迭代器 c.erase(b,e);//不包括e所指元素 c.clear(); c.pop_back();//删除最后一个元素 c.pop_front();//只适用于list和deque
2.7赋值与swap
c1=c2;//删除c1中元素,然后c2赋给c1 c1.swap(c2);//交换内容 c.assign(b,e);//将迭代器b,e之间的元素复制到c,可以是不同类型的容器
2.8list特有算法
lst.merge(lst2);//lst2中的元素将被删除 lst.merge(lst2,cmp); lst.remove(val); lst.remove(cmp);//将指定值或者谓词函数返回非零的删除 lst.reverse(); lst.sort(); //将lst2中的元素已接到lst中,在lst2中删除这些元素。 lst.splice(iter,lst2); lst.splice(iter,lst2,iter2); lst.splice(beg,end);
三.string
string享有顺序容器的大多数操作,这里只总结一下string特有的。
1.subter,append,replace
s.subter(pos,n);//返回从下表pos开始的长度为n的子串 s.subter(pos); s.append(args);//将参数args接到s后面 s.replace(pos,len,args);//下标从pos开始长度为len的,被args替换 s.replace(b,e,args);
2string的查找操作
其中的参数args有好多不同的取值常用的有 (s2,pos)//从pos开始查找s2,s2可以是c风格的字符串 s.find(args);//s中查找args第一次出现的位置 s.rfind();//最后一次出现的位置 s.find_first_of(args);//查找args中任意字符出现的第一次 s.find_last_of(args);//最后一次 s.find_first_not_of(args);//查找第一个不属于args的字符出现的位置 s.find_last_not_of(args);//
四.容器适配器
1.stack
stack<string,vector<string> > s.empty(); s.size(); s.pop(); s.top(); s.push(item);
2队列和优先队列
struct cmp1 { bool operator ()(int &a,int &b) { return a>b;//最小值优先 } }; struct cmp2 { bool operator ()(int &a,int &b) { return a<b;//最大值优先 } }; //定义结构,使用运算符重载,自定义优先级2 struct number1 { int x; bool operator < (const number1 &a) const { return x>a.x;//最小值优先 } }; struct number2 { int x; bool operator < (const number2 &a) const { return x<a.x;//最大值优先 } }; int a[]= {14,10,56,7,83,22,36,91,3,47,72,0}; number1 num1[]= {14,10,56,7,83,22,36,91,3,47,72,0}; number2 num2[]= {14,10,56,7,83,22,36,91,3,47,72,0}; priority_queue<int>que;//采用默认优先级构造队列 priority_queue<int,vector<int>,cmp1>que1;//最小值优先 priority_queue<int,vector<int>,cmp2>que2;//最大值优先 priority_queue<int,vector<int>,greater<int> >que3;//注意“>>”会被认为错误, //这是右移运算符,所以这里用空格号隔开 priority_queue<int,vector<int>,less<int> >que4;////最大值优先 priority_queue<number1>que5; priority_queue<number2>que6; q.empty(); q.size(); q.pop(); q.front(); q.back(); q.top(); q.push(item);
五.关联容器
1.map
1.1map定义类型
map<K,V>::key_type//键类型 map<K,V>::mapped_type//值类型 map<K,V>::value_type//为pair类型
1.2map中添加元素
map<string,int> word_cnt; string word; while(cin>>word) ++word_cnt[word];//如果map中没用anne则会插入新元素
1.2map中的insert
m.insert(e);//如果e.first不在其中,则插入 //返回一个pair对象,pair<map<string,int>::iterator,bool> m.insert(make_pair("anne",1));
1.3map中的查找与删除
m.count(k);//返回m中k(键)出现的次数 m.find(k); m.erase(k); m.erase(p); m.erase(b,e);
2.set
set与map类似,但只有一个键,没有对应的值
3.multimap与multiset
m.find(); m.count(); m.lower_bound(k);//返回迭代器,指向键不小于k的第一个元素 m.upper_bound(k); m.equal_range(k);//返回一个pair对象,first等价于m.lower_bound(k),second等价于m.upper_bound(k)
六.泛型算法
1.accumulate(numeric头文件)
int sum=accumulate(vec.begin(),vec.end(),42);//vec的元素之和再加上42
2.fill、fill_n
fill(vec.begin(),vec.end(),0); fill(a,a+n,0);//a为数组 fill_n(vec.begin,10,0);
3.插入迭代器back_iterator
vector<int> vec; fill_n(back_irterator(vec),10,0);
4.copy()
//将ilist迭代器范围内的元素复制到vec中 copy(ilst.begin(),ilst.end(),back_iterator(vec));
5.去重unique
//返回指向超出无重复的元素的末端迭代器 unique(vec.begin(),vec.end());
6.iostream迭代器
istream_iterator<int> in(cin); istream_iterator<int> eof;//结束迭代器 while(in!=eof)//当流遇到文件结束或者某个错误时相当于等于eof的值 vec.push_back(*in++); ostream_iterator<string> out(cout,"\n"); istream_iterator<string> in(cin),eof; while(in!=eof) *out++=*in++;
相关文章推荐
- 《C++ primer》学习笔记之十七:查看vc的c++标准库的结构
- C++标准库与STL的关系
- C++标准库与STL的关系
- C++标准库智能指针(std::auto_ptr)
- C++各大有名库的介绍之C++标准库
- 1、C++各大有名库的介绍——C++标准库
- C++各大有名库的介绍之C++标准库
- C++标准库和STL的关系 (转载)
- C++标准库string类型学习笔记
- c++标准库
- 剖析C++标准库智能指针(std::auto_ptr)
- 12-3-16关于c++标准库bitset
- C++标准库(一)
- 剖析C++标准库智能指针(std::auto_ptr) 以及智能指针的原理
- C++标准库简介(转)
- [C++STDlib基础]C++标准库概述
- C++标准库简介
- 什么是C++标准库
- C++标准库和标准模板库
- 利用C++标准库函数对数组进行排序