您的位置:首页 > 其它

STL常用容器及其常用函数总结(避免记混了SB)

2014-06-13 22:19 253 查看
1、vector

初始化:vector<int> v;

vector<int> v(v1);//v1是一个vector<int>

vector<int> v(it1,it2);//it1,it2是两个vector<int>::iterator

vector<int> v(10,0);//初始化为10个0

vector<int> v(10);//初始化为10个随机值

检查容器是否为空:v.empty()

获取容器中元素长度:v.size();

另附几个不常使用:v.max_size()//容器中可容纳最多元素个数   c.resize(n)//调整容器长度大小为n  c.resize(n,t)//同上所有元素设为t

添加元素:v.push_back(10);//在尾添加元素10

v.insert(it,10);//在迭代器it所指向元素前面插入元素10

v.insert(it,10,1);//在迭代器it所指向元素前面插入10个元素0

v.insert(it,it1,it2);//在迭代器it所指向元素前面插入迭代器[it1,it2)范围内元素

访问元素:v[10]  v.at(10)  c.back()  c.front  上述返回的都是引用,因此可以用于改变该位置的元素值

删除元素:v.erase(it);//删除迭代器it所指向元素

v.erase(it1,it2);//删除迭代器[it1,it2)范围内元素

v.clear();//删除所有元素

c.pop_back;//删除最后一个元素

查找某一元素:find(it1,it2,10);//查找[it1,it2)范围内是否存在元素值为10,存在则返回指向该元素迭代器

swap函数:v.swap(v1);//将容器v与v1中内容交换,速度快于将内容复制

assign函数:v.assign(it1,it2);//将v中元素替换为[it1,it2)范围内元素,it1,it2不能指向v中元素,与swap相比需要将[it1,it2)内容复制到v中

v.assign(10,0);//将v中元素替换为10个0

2、list

初始化:同vector: list<int> l;     list<int>  l(l1);  list<int> l(it1,it2);   list<int> l(10,0);  list<int> l(10);

容器是否为空:l.empty();

容器大小:l.size();   l.max_size();  l.resize(10);  l.resize(10,0);

添加元素:l.push_back(10);//同

l.push_front(10);//在头添加元素10

l.insert(it,10);//

l.insert(it,it1,it2);//

l.insert(it,10,0);//

访问元素:l.back();    l.front();//无[]和at,性质决定

删除元素:l.erase(it);

l.erase(it1,it2);

l.clear();//

l.pop_back();//

l.pop_front();//和deque有

查找某一元素:find(it1,it2,0);//返回迭代器

swap函数及assign函数同上,使用

l.swap(l1);  l.assign(it1,it2);  l.assign(10,0);

3、stack(无迭代器)

初始化:stack<int> stk;  stack<int> stk(stk1); 

添加元素:stk.push(10);//入栈

删除元素:stk.pop();//出栈

访问元素:stk.top();//获得栈顶元素

stk.empty();  stk.size();

stk.swap(stk1);

3、queue(无迭代器)

queue<int> que;  queue<int> que(que1);

que.push(10);//入队  que.pop();//出对

que.front();//头   que.back();//尾

que.empty();//判空  que.size();//长度

que.swap(que1);//

4、string

初始化:string s;  

string s(s1);

string s("123");

string s("1234",3);//前3个元素用于初始化

string s(s1,3);//s1的[0,3)作为s初始化

string s(s1,1,2);//s1的从位置1开始长度为2的内容用于初始化s

string s(sit1,sit2);//迭代器初始化

修改string对象方法:

insert,erase,assign

访问某一位置元素:s[1]; s.at[1];  返回引用

截取子串:s.sustr(1,5);//位置1开始长度为5   s.substr(1);//返回位置1开始子串

append函数:s.append(args)

replace函数:s.replace(1,5,args);  s.replace(it1,it2,args);

args可为多种类型参数,表示一段范围字符串内容即可:下标位置,迭代器等

查找函数:s.find(args)   s.rfind(args);  

s.find_first_of(args);  s.find_last_of(args);

s.find_first_not_of(args);  s.find_last_not_of(args);

比较函数:compare

string的各个函数参数比较多样化,主要是可以通过下标,迭代器,字符串表示一段目标与之匹配

4、map

  初始化:map<int,int> mp;

map<int,int> mp(mp1);

map<int,int> mp(it1,it2);

内部类型定义:map<K,V>::key_type键值类型  

map<K,V>::mapped_type键值关联值类型

map<K,V>::value_type是个pair类型

假定一个map迭代器it,it指向类型为value_type,it->first指向类型key_type,it->second指向类型为mapped_type

插入元素:mp.insert(make_pair(10,10));

mp.insert(it1,it2);

insert返回类型为pair<map<int,int>::iterator,bool>若插入成功,则second为true;若该键值已存在则插入失败,返回second为false

访问元素:mp[10];//10是键值

count函数:mp.count(10);//返回键值为10的元素个数,因此只为0或1

find函数:mp.find(10);//返回键值为10的元素的迭代器

erase函数:mp.erase(10)//删除键值为10的元素

mp.erase(it);//删除迭代器it所指向元素

mp.erase(it1,it2);//删除迭代器[it1,it2)范围内数据

5、set

支持insert,count,find,erase等函数

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: