STL总结
容器类放入的都是元素的拷贝,而非引用。所以如果需要对元素做出改动,最好是把元素存在data[N]数组中,而仅仅在容器中存放数组下标。
函数传递容器类参数时,需要传引用,否则会超时。
vector
vector作为数组,vector <int> num[ N ],可以当作二维数组使用,由于所有的vector初始为空,所以N可以很大。
1、vector< vector<int> >,注意加空格,否则会编译错误。
2、迭代器访问:vector<int> vec;
vector<int> :: iterator it;
for(it = vec.begin(); it != vec.end(); it++) //vector 不支持 it < vec.end(), 只能用不等号, vec.end()指示最后一个元素的下一个地址。[ begin, end)
*it = 123; //使用迭代器 *it 即可
3、push_back()、 pop_back(),在末尾加入、删除一个元素, clear() 清空。
4、size(),返回大小。
5、insert(it, x):在迭代器it处插入x。 vector<int> :: iterator it = vec.begin(); vec.insert(it + 5, "abcde"); //数组下标5的低方插入"abcde"。
6、erase(it): 删除迭代器it处的元素。 erase(it, it + 5):删除区间 [it, it + 5) 的元素,左闭右开。
set
set内部元素自动递增排序,且不重复
1、find(x),查找x, 返回x处的迭代器,查找失败为end()。
2、insert(x), 插入x。
string
1、string转char[]: string ss = “abc”; char a* = ss.c_str();
char[]转string:直接赋值即可。
2、可直接相加, 可以比较大小。
3、string ss1 = "abcgh", ss2 = "def"; ss1.insert(3, ss2); // 在ss1[3]的位置插入ss2.
4、erase迭代器删除和vector一致, str.erase( pos, length); //从pos位置删除length长度的元素
5、substr(pos, length): 返回从pos开始长length 的子串。(区间操作,使用迭代器就是左闭右开,使用数字下标就是开始位置和长度)
map
1、map的迭代器使用, key = it->first, val = it->second;
2、map[ " key" ] 在查询过程中必须先确定是否存在 if(mp.count( "key" ) == 0),否则会返回错误的结果(没有该键值时,会在map中插入该key,并将其值设为默认值)。
3、mp.erase(key),删除以key为键的元素。
queue、stack
1、基本的push、pop操作,pop仅仅删除元素,并不返回。
2、队列不删除仅访问元素 : front、bac; 栈:top
3、都没有清空操作,需要自己写循环来pop
algorithm
1、max、min、abs、swap
2、sort(num, num + N, cmp):对于数字参数,b处应写最后一个元素的下一个位置; 对于容器,b处填end。
3、reverse(it, it2):填入区间,在该区间内反转,填写方式与sort一致。
STL总结的更多相关文章
- 详细解说 STL 排序(Sort)
0 前言: STL,为什么你必须掌握 对于程序员来说,数据结构是必修的一门课.从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来.幸运的是这些理论都已经比较成熟,算 ...
- STL标准模板库(简介)
标准模板库(STL,Standard Template Library)是C++标准库的重要组成部分,包含了诸多在计算机科学领域里所常见的基本数据结构和基本算法,为广大C++程序员提供了一个可扩展的应 ...
- STL的std::find和std::find_if
std::find是用来查找容器元素算法,但是它只能查找容器元素为基本数据类型,如果想要查找类类型,应该使用find_if. 小例子: #include "stdafx.h" #i ...
- STL: unordered_map 自定义键值使用
使用Windows下 RECT 类型做unordered_map 键值 1. Hash 函数 计算自定义类型的hash值. struct hash_RECT { size_t operator()(c ...
- C++ STL简述
前言 最近要找工作,免不得要有一番笔试,今年好像突然就都流行在线笔试了,真是搞的我一塌糊涂.有的公司呢,不支持Python,Java我也不会,C有些数据结构又有些复杂,所以是时候把STL再看一遍了-不 ...
- codevs 1285 二叉查找树STL基本用法
C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...
- STL bind1st bind2nd详解
STL bind1st bind2nd详解 先不要被吓到,其实这两个配接器很简单.首先,他们都在头文件<functional>中定义.其次,bind就是绑定的意思,而1st就代表fir ...
- STL sort 函数实现详解
作者:fengcc 原创作品 转载请注明出处 前几天阿里电话一面,被问到STL中sort函数的实现.以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的,但听电话另一端面试官的声音,感觉不 ...
- STL的使用
Vector:不定长数组 Vector是C++里的不定长数组,相比传统数组vector主要更灵活,便于节省空间,邻接表的实现等.而且它在STL中时间效率也很高效:几乎与数组不相上下. #include ...
- [C/C++] C/C++延伸学习系列之STL及Boost库概述
想要彻底搞懂C++是很难的,或许是不太现实的.但是不积硅步,无以至千里,所以抽时间来坚持学习一点,总结一点,多多锻炼几次,相信总有一天我们会变得"了解"C++. 1. C++标准库 ...
随机推荐
- 画了一张基于Spring Cloud的微服务系统架构图
- 2018年高教社杯全国大学生数学建模竞赛A题解题思路
题目 先贴一下A的题目吧 A题 高温作业专用服装设计 在高温环境下工作时,人们需要穿着专用服装以避免灼伤.专用服装通常由三层织物材料构成,记为I.II.III层,其中I层与外界环境接触,III层与 ...
- centos7下/etc/rc.local文件里配置的开机启动项不执行的解决办法
习惯于在/etc/rc.local文件里配置我们需要开机启动的服务,这个在centos6系统下是正常生效的.但是到了centos7系统下,发现/etc/rc.local文件里的开机启动项不执行了!仔细 ...
- Python初始编码-3
01010100 新11010000 开11010100 一01100000 家11000000 看11000000 看 01010100011101110101011110110A B C01000 ...
- C-数据结构-typedef的用法
.typedef的用法 # include <stdio.h> typedef int zhang; //为数据类为int从新取名为zhang 等价于int typedef struct ...
- 实践简单的项目WC
#include<iostream> #include<fstream> #include<string> #include<Windows.h> us ...
- android开发之Tabhost刷新
在android中,使用tabHost的时候,如果tab被点击,该tab所对应的activity被加载了,从别的tab切换回来的时候,activity不会再次被创建了(onCreate),所以要想每次 ...
- js拷贝实例;
,]]; // var arr2 =arr1.slice(0); // arr1[0] ="z"; // arr1[2][0] = "v"; // consol ...
- ESXi内虚拟机带快照与不带快照的情况下简单性能对比.
1. 两个虚拟机配置相同都为2vCPU 8G内存 一个虚拟机内包含较多的快照且有内容梗概 一个虚拟机不包含快照直接只有一个虚拟机的vmdk磁盘文件 操作系统未windows server 2008r2 ...
- React 多组件传值props和this
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...