常用STL用法总结
2016-06-12 15:56
344 查看
13个头文件
vector
初始化
访问
1下标访问非所有容器均支持
2迭代器访问
功能最最基本
1修改
2信息检索
3查找
4排序
map
初始化
访问
功能
List
初始化
访问
功能
修改
查找
信息检索
排序
算法部分主要由头文件
分类:
向量(vector): 连续存储的元素
列表(list): 由节点组成的双向链表,每个结点包含着一个元素
双队列(deque): 连续存储的指向不同元素的指针所组成的数组
集合(set): 由节点组成的红黑树,每个节点都包含着一个元素
栈(stack): 后进先出的值的排列
队列(queue): 先进先出的执的排列
映射(map): 由{键,值}对组成的集合,以某种作用于键对上的谓词排列
2)迭代器访问:
开头第一个元素的指针默认为(容器名.begin()如a.begin())
最后一个元素的下一个位置的指针默认为(容器名.end()如a.end())
vector::iterator it = text.begin();
//定义迭代器(容器类型<元素类型>::iterator 名字)并指向容器的第一个元素
++it,–it//迭代器可以如同指针一样移动
*it; //it相当于指向向量容器text的一个指针,可以使用*it这样的方式来取到元素
Vector.pop_back()//删除最后一个数据
Vector.push_back(element)//尾部加入一个数据
Vector.erase(position) //删除position位置的数据
Vector.erase(begin, end) //删除[begin, end)区间的数据
Vector.insert(position, element)//在position位置插入一个element拷贝
2)信息检索
Vector.size()//返回容器中实际数据的个数。
Vector.begin()//返回指向容器第一个元素的迭代器
Vector.end()//返回指向容器最后一个元素的下一个位置的迭代器
3)查找
vector ::interator it = find(vi.begin(), vi.end(), targetItem) ;
//从开头找到末尾,返回找到的元素的指针给it,没有则返回vi.end()
cout << *it << endl ; ///返回容器内找到值的位置。
4)排序
sort(vi.begin() , vi.end()); // 从小到大
//以上只能比较已有类型,需要比较自定义类的,需在类里面写上比较函数,写法自寻
// sort(vi.begin(), vi.end(),compare()) ;
注意:
string V=int_string[2];
it->first;it->second;//定义迭代器,first与second分别为key与value
4)排序
自动按key升序排列,key有固定的含义,一般是不需要排序的
List.assign(长度,初始值);//整体赋值
List.push_front (target);//前添加
List.push_back (target);//后添加
List.pop_front();//前移除
List.pop_back();//后移除
List.insert(List.begin()+1,3,9);//从第二位开始插入3个9
List.erase(List.begin()+1);//擦除第二位元素
查找
it=List.find(targetItem);//find函数可以如同之前vector一样定义范围=
if(it==List.end())
{/找不到数据/}
else {/找到数据/}
信息检索
List.size()//返回容器中实际数据的个数
List.front()//返回容器第一个元素
List.back()//返回容器最后一个元素
List.begin()//返回指向容器第一个元素的迭代器
List.end()//返回指向容器最后一个元素的下一个位置的迭代器
排序
List.sort();//已有类型排序
List.reverse();//把list的元素倒转
vector
初始化
访问
1下标访问非所有容器均支持
2迭代器访问
功能最最基本
1修改
2信息检索
3查找
4排序
map
初始化
访问
功能
List
初始化
访问
功能
修改
查找
信息检索
排序
13个头文件
<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>、<utility>
算法部分主要由头文件
<algorithm>,<numeric>和
<functional>组成。
分类:
向量(vector): 连续存储的元素
列表(list): 由节点组成的双向链表,每个结点包含着一个元素
双队列(deque): 连续存储的指向不同元素的指针所组成的数组
集合(set): 由节点组成的红黑树,每个节点都包含着一个元素
栈(stack): 后进先出的值的排列
队列(queue): 先进先出的执的排列
映射(map): 由{键,值}对组成的集合,以某种作用于键对上的谓词排列
vector
初始化:
vector<元素类型> 名字;//初始化一个空向量 vector<元素类型(如int,)> 名字(如arr)(长度(如10) );//初始化长度的vector vector<元素类型> vector_a(vector_b);//拷贝初始化 vector<元素类型> 名字(长度,初始值);//初始化长度并每个赋值为初始值 vector< int > vecname( a, a+6 ); //初始化为已有数组的一部分,此例整型数组a[0]到a[5]共6个元素初始化为int型的vector
访问:
1)下标访问(非所有容器均支持):vector<int> a(10,-1); cout << a[6] << endl;//输出-1
2)迭代器访问:
开头第一个元素的指针默认为(容器名.begin()如a.begin())
最后一个元素的下一个位置的指针默认为(容器名.end()如a.end())
vector::iterator it = text.begin();
//定义迭代器(容器类型<元素类型>::iterator 名字)并指向容器的第一个元素
++it,–it//迭代器可以如同指针一样移动
*it; //it相当于指向向量容器text的一个指针,可以使用*it这样的方式来取到元素
功能(最最基本):
1)修改Vector.pop_back()//删除最后一个数据
Vector.push_back(element)//尾部加入一个数据
Vector.erase(position) //删除position位置的数据
Vector.erase(begin, end) //删除[begin, end)区间的数据
Vector.insert(position, element)//在position位置插入一个element拷贝
2)信息检索
Vector.size()//返回容器中实际数据的个数。
Vector.begin()//返回指向容器第一个元素的迭代器
Vector.end()//返回指向容器最后一个元素的下一个位置的迭代器
3)查找
vector ::interator it = find(vi.begin(), vi.end(), targetItem) ;
//从开头找到末尾,返回找到的元素的指针给it,没有则返回vi.end()
cout << *it << endl ; ///返回容器内找到值的位置。
4)排序
sort(vi.begin() , vi.end()); // 从小到大
//以上只能比较已有类型,需要比较自定义类的,需在类里面写上比较函数,写法自寻
// sort(vi.begin(), vi.end(),compare()) ;
注意:
//插入和赋值不要搞混! vector<int> vec; vec[0] = 1024; //错误!vec是空的,应该使用push_back! //插入在最后一个位置! vector<int> vec(10); vec.push_back(2)//size变成11!
map
(key-value,其中第一个称为关键字,每个关键字只能出现一次,第二个可称为该关键字的值)初始化:
map访问:
Int T=string_int[“target”];//直接使用key访问valuestring V=int_string[2];
it->first;it->second;//定义迭代器,first与second分别为key与value
功能:
修改 Map.insert(pair<int,string>(102,"aclive"));//关于pair类型请自行查找相关信息 Map.insert(map<int,string>::value_type(321,"hai"));//前两种只适用于key不存在! Map[112]="April";//简单最常用的插入添加!当key已经存在时,会修改对应value //用迭代器删除 map<int, string>::iterator iter; iter = mapStudent.find(1); mapStudent.erase(iter); //用关键字删除 Int n = mapStudent.erase(1);//删除了返回1,否则返回0 //用迭代器,成片的删除 mapStudent.earse(mapStudent.begin(), mapStudent.end()); //成片删除要注意的是,删除区间是一个前闭后开的集合 查找 it=string_int.find(targetItem);//find函数可以如同之前vector一样定义范围= if(it==string_int.end()) {/*找不到数据*/} else {/*找到数据*/} 信息检索 Map.size()//返回容器中实际数据的个数 Map.begin()//返回指向容器第一个元素的迭代器 Map.end()//返回指向容器最后一个元素的下一个位置的迭代器
4)排序
自动按key升序排列,key有固定的含义,一般是不需要排序的
List
(双向链表,允许快速的插入和删除,但是随机访问却比较慢)初始化:
list<类型> 容器名;访问:
不能通过下标,只能逐项遍历!for (list <int>::iterator it = test.begin (); it != test.end (); it ++) { if (*it == target) { /*已经得到*it */ } }
功能:
修改List.assign(长度,初始值);//整体赋值
List.push_front (target);//前添加
List.push_back (target);//后添加
List.pop_front();//前移除
List.pop_back();//后移除
List.insert(List.begin()+1,3,9);//从第二位开始插入3个9
List.erase(List.begin()+1);//擦除第二位元素
查找
it=List.find(targetItem);//find函数可以如同之前vector一样定义范围=
if(it==List.end())
{/找不到数据/}
else {/找到数据/}
信息检索
List.size()//返回容器中实际数据的个数
List.front()//返回容器第一个元素
List.back()//返回容器最后一个元素
List.begin()//返回指向容器第一个元素的迭代器
List.end()//返回指向容器最后一个元素的下一个位置的迭代器
排序
List.sort();//已有类型排序
List.reverse();//把list的元素倒转
相关文章推荐
- 浅析STL中的常用算法
- STL区间成员函数及区间算法总结
- c++ STL容器总结之:vertor与list的应用
- C++在成员函数中使用STL的find_if函数实例
- 关于STL中list容器的一些总结
- 关于STL中的map容器的一些总结
- 浅析stl序列容器(map和set)的仿函数排序
- STL list链表的用法详细解析
- stl容器set,map,vector之erase用法与返回值详细解析
- STl中的排序算法详细解析
- 关于STL中vector容器的一些总结
- 关于STL中set容器的一些总结
- 简单说说STL的内存管理
- STL与泛型编程(1)---模板
- CppUtest发现的STL容器内存泄漏问题
- STL中算法
- STL简单应用
- vector-list-deque
- 三十分钟掌握STL
- Qt中QSet的使用