容器类放入的都是元素的拷贝,而非引用。所以如果需要对元素做出改动,最好是把元素存在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总结的更多相关文章

  1. 详细解说 STL 排序(Sort)

    0 前言: STL,为什么你必须掌握 对于程序员来说,数据结构是必修的一门课.从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来.幸运的是这些理论都已经比较成熟,算 ...

  2. STL标准模板库(简介)

    标准模板库(STL,Standard Template Library)是C++标准库的重要组成部分,包含了诸多在计算机科学领域里所常见的基本数据结构和基本算法,为广大C++程序员提供了一个可扩展的应 ...

  3. STL的std::find和std::find_if

    std::find是用来查找容器元素算法,但是它只能查找容器元素为基本数据类型,如果想要查找类类型,应该使用find_if. 小例子: #include "stdafx.h" #i ...

  4. STL: unordered_map 自定义键值使用

    使用Windows下 RECT 类型做unordered_map 键值 1. Hash 函数 计算自定义类型的hash值. struct hash_RECT { size_t operator()(c ...

  5. C++ STL简述

    前言 最近要找工作,免不得要有一番笔试,今年好像突然就都流行在线笔试了,真是搞的我一塌糊涂.有的公司呢,不支持Python,Java我也不会,C有些数据结构又有些复杂,所以是时候把STL再看一遍了-不 ...

  6. codevs 1285 二叉查找树STL基本用法

    C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...

  7. STL bind1st bind2nd详解

    STL bind1st bind2nd详解   先不要被吓到,其实这两个配接器很简单.首先,他们都在头文件<functional>中定义.其次,bind就是绑定的意思,而1st就代表fir ...

  8. STL sort 函数实现详解

    作者:fengcc 原创作品 转载请注明出处 前几天阿里电话一面,被问到STL中sort函数的实现.以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的,但听电话另一端面试官的声音,感觉不 ...

  9. STL的使用

    Vector:不定长数组 Vector是C++里的不定长数组,相比传统数组vector主要更灵活,便于节省空间,邻接表的实现等.而且它在STL中时间效率也很高效:几乎与数组不相上下. #include ...

  10. [C/C++] C/C++延伸学习系列之STL及Boost库概述

    想要彻底搞懂C++是很难的,或许是不太现实的.但是不积硅步,无以至千里,所以抽时间来坚持学习一点,总结一点,多多锻炼几次,相信总有一天我们会变得"了解"C++. 1. C++标准库 ...

随机推荐

  1. ansible一键部署k8s单机环境

    一.虚拟机准备 干净的Centsot7.4.4G内存.2个CPU 最小化安装,最好带虚拟化 二.执行初始化脚本 注意:脚本中配置静态网卡根据实际网卡名称配置,我用的是ens33 可以用 sed -i ...

  2. Docker网络解决方案 - Calico部署记录

    简单来说,实现docker跨主机容器间通信,常用的第三方网络方案是Flannel,Weave,Calico:Flannel会为每个host分配一个subnet,容器从这个subnet中分配ip,这些i ...

  3. python基础学习笔记(九)

    python异常 python用异常对象(exception object)来表示异常情况.遇到错误后,会引发异常.如果异常对象并未被处理或捕捉,程序就会用所谓的 回溯(Traceback, 一种错误 ...

  4. hdu 3038 给区间和,算出多少是错的

    参考博客 How Many Answers Are Wrong Problem Description TT and FF are ... friends. Uh... very very good ...

  5. D. Too Easy Problems

    链接 [http://codeforces.com/group/1EzrFFyOc0/contest/913/problem/D] 题意 给你n个题目,考试时间T,对于每个问题都有一个ai,以及解决所 ...

  6. 《Linux内核分析》chapter4

  7. 现代程序设计 homework-01

    搞了6个小时individual project...看看博客做一做第一次现代程序设计作业 1) 建立 GitHub 账户, 把课上做的 “最大子数组之和” 程序签入 我的github地址是https ...

  8. HTML 引入Css样式

  9. Appium学习笔记4_元素定位方法

    Appium之元素定位,如果对Android上如何使用工具获取页面元素有问题的,请转战到这:http://www.cnblogs.com/taoSir/p/4816382.html. 下面主要是针对自 ...

  10. Java WebDriver 使用经验

    0x00 背景 WebDriver作为Selenium项目的工具之一,可以高效的操作各类主流浏览器包括诸如:chrome.IE.Firefox.Safari,并同时支持windows和*nux系统.W ...