template是一个泛化的:
使用template时开始仅仅是声明,具体的例如:k<int> a;叫做实例化
显式实例化:类似k<int>a;明确指出哪种类型;
隐式实例化:类似k<>a;没有说明类型,有编译器自动匹配
特化:(个人认为就是自己制定template 中T的作用)

操作符重载:

复习stl:
vector:

list不适合查找;
顺序容器和关联容器中都有的成员函数:
erase:删除一个或多个元素
clear:删除所有元素
vecter,deque支持随机访问,支持迭代器的<,>,i=i+2的操作;
stack,queue,priority_queue不支持迭代器
list,set,mulset,map,mulmap为双向,不支持随机访问,无<,>,[]等;
list在使用merge合并时,为从小到大排序的合并;
l.splice(l.begin(),ll,ll.begin(), ll.end());

map :

添加元素:m.insert(make_pair(str_copy, str));
m.insert(pair<string ,string>(str_copy, str));
(multimap与map共用;而m[str]=str1只适合map)
可用迭代器遍历: if (m.count(p->first) == 1)
s.push_back(p->second);
(第一个为p->first ,第二个为p->second)

set :
if (S.size() == lens) ans++;else lens = S.size;
可利用重复元素不进入set中,使用容器内个数是否相等来统计重复元素的 个数
if (s.find(x)!=s.end()) 判断元素是否属于集合(因为如果不属于返回值为s.end())
vector :
查找里面的元素个数:m.size();
list :
Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.

string :
str1.replace(pos, 3, s2);//replace 的第一参数为下标,第二为个数,第三个为要替换的东西
pos = str1.find(s1, 0);//第一个参数为找的符合s1的字符串,第二个是str1开始查找的位置
str.substr(begin,len);//返还str开始的下标长len的字符串
str.replace(pos,3,s2)//用s2中的字符替换str[pos]开始后三个字符;
数字转string:
for (int i = 1; i <= n; i++)
str += '0' + i;
dequeue :
q.push()//放在队列后
q.front()//访问第一个
q.pop()//删除第一个
q.back()//访问最后一个
注意:为顺序存储结构:
queue :
只能进行pop头,push 尾

注意:为顺序存储结构:

priority_queue:
默认从大到小(less)注意:set从小到大(greater);
从大到小:priority_queue<T,vector<T>,greater<T>> q;
放入其中时,优先级大的放最上面(可查奶牛问题);

algorithm:
使用copy()之前要确保不溢出,string可以考虑reserve;
next_permutation(全排列):
do{cout << str << endl;} while (next_permutation(str, str + strlen(str), cmp));

(可以想把办法使用字符串剪切操作输出全排列的位数)
s = str.substr(0, m);
cout << s << endl;
while (next_permutation(str.begin(), str.end()))
{
if (s != str.substr(0, m))
{
s = str.substr(0, m);
cout << s << endl;
}
}

max_element(begin,end,mycmp);
bool mycmp(const pair<int, int> p1, const pair<int, int > p2)
{
return p1.second < p2.second;
}
(对于mycmp,,,min_element返回最小值的地址)

count(a, a + 5, 'a')//第一个参数为开始地址,第二个为结束的地址,第三个为要找的值
getline(cin,s2,'j');//第一个为从哪读入,第二个为读给的对象,第三个为到那停止(默认换行停止);
sort(vect.begin(),vect.end(),greater<int> ())//默认从大到小

STL的注意事项的更多相关文章

  1. 【坑点集合】C++ STL 使用注意事项整理

    Intro 简单整理了一些关于 C++ STL 的注意点. 虽然大多数东西可以手写不过某些东西最好少造轮子,善用 STL 可以节约很多考场时间,简化实现. 当然是时空限制和功能足够的前提下. Tips ...

  2. 关于STL的map的注意事项

    关于map是什么,这里就不多叙述了. 直接正题,常用的map插入操作有三种方法:通过pair<key_type,value_type>.通过value_type插入数据.还有一种类似于数组 ...

  3. STL容器vector应用注意事项

    [1]提前分配足够空间以免不必要的重新分配和复制代价 关于vector容器重新分配和复制及析构释放的代价,请参见随笔<STL容器之vector>. 应用示例对比代码如下: #include ...

  4. STL MAP使用注意事项

    Hat’s Words A hat’s word is a word in the dictionary that is the concatenation of exactly two other ...

  5. C++ STL之迭代器注意事项

    1.两个迭代器组成的区间是前闭后开的 2.如果迭代器的有效性,如果迭代器所指向的元素已经被删除,那么迭代器会失效 http://blog.csdn.net/hsujouchen/article/det ...

  6. c++STL排序算法注意事项

    关于算法中的比较函数 #include<iostream> #include<algorithm> using namespace std; int compare(doubl ...

  7. stl中的for_each() 函数的注意事项

    #include<iostream> using namespace std; #include"vector" #include"algorithm&quo ...

  8. stl里面stack的注意事项

    1. pop是不返回元素的.因为不能返回引用,只能返回实例.而这个实例是在函数里面初始化的,所以必须在外面再赋值和初始化.而如果实例复制失败,会产生丢失. 2. 而top是可以返回引用的.实际上,返回 ...

  9. STL sort的comp函数注意事项

    今天写了个题,结果碰巧re了,我眉头一皱发现事情并不简单. 原来我之前的comp写的都是错的. bool cmp(milkman a,milkman b) { return a.price<=b ...

随机推荐

  1. jq的遍历关系元素方法集合

    children .children(selector) 返回被选元素的所有直接子元素,不返回文本节点: 下面例子:给level-2的子元素设置border.比较使用children和find htm ...

  2. 页面跳转、底部tabs切换页面

    1.页面跳转 import { NavController } from 'ionic-angular'; constructor(public navCtrl: NavController) { } ...

  3. Gui图形化界面

    .py 脚本 .pyc 导入临时文件 .pyw 图形化的Python文件 Python 常用的几种图形化 1.pywin: python基于Windows的图形化,可以实现键盘钩子之类的使用功能 2. ...

  4. hsf

    参考文章: ----- 架构和框架的区别 1.HSF源码剖析 2.Http和RPC区别 3.分布式服务框架HSF 4.高并发架构系列:如何从0到1设计一个类Dubbo的RPC框架 5.HSF的原理分析 ...

  5. CF1102F Elongated Matrix

    题目地址:CF1102F Elongated Matrix 没想到Div.3里还有这么好的题 其实就是求Hamilton路径 预处理 \(d\) 数组: \(d1_{i,j}\) 表示第 \(i,j\ ...

  6. 积分从入门到放弃<2>

    这部分重新从定积分学了 1,lnx 的导数就是x^(-1) = 1/x 那么求∫(1/x)dx = ln|x|+C  2,初值问题.就是求∫f(x)dx = F(x) + C 求C . 3,Houdi ...

  7. Python3-进程

    进程 什么是进程 进程调度 进程的并行与并发 进程的创建与结束 在python程序中的进程操作 守护进程 进程同步(multiprocess.Lock) 进程间通信——队列 生产者消费者模型 进程池和 ...

  8. shell-自动按省市建立文件夹,并在每个城市下创建当前日期文件夹

    Code: #!/bin/bash date=`date +%Y%m%d` ProName="广东市" CityName="广州市 汕尾市 阳江市 揭阳市 茂名市 江门市 ...

  9. fabric.js PatternBrush

    // Original canvas const canvas = new fabric.Canvas('canvas'); fabric.Image.fromURL('https://picsum. ...

  10. flask(1)

    在Python中常用的web框架有flask.Django.tornado # -*- encoding: utf-8 -*- from flask import Flask #建立Flask对象 a ...