STL的注意事项
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的注意事项的更多相关文章
- 【坑点集合】C++ STL 使用注意事项整理
Intro 简单整理了一些关于 C++ STL 的注意点. 虽然大多数东西可以手写不过某些东西最好少造轮子,善用 STL 可以节约很多考场时间,简化实现. 当然是时空限制和功能足够的前提下. Tips ...
- 关于STL的map的注意事项
关于map是什么,这里就不多叙述了. 直接正题,常用的map插入操作有三种方法:通过pair<key_type,value_type>.通过value_type插入数据.还有一种类似于数组 ...
- STL容器vector应用注意事项
[1]提前分配足够空间以免不必要的重新分配和复制代价 关于vector容器重新分配和复制及析构释放的代价,请参见随笔<STL容器之vector>. 应用示例对比代码如下: #include ...
- STL MAP使用注意事项
Hat’s Words A hat’s word is a word in the dictionary that is the concatenation of exactly two other ...
- C++ STL之迭代器注意事项
1.两个迭代器组成的区间是前闭后开的 2.如果迭代器的有效性,如果迭代器所指向的元素已经被删除,那么迭代器会失效 http://blog.csdn.net/hsujouchen/article/det ...
- c++STL排序算法注意事项
关于算法中的比较函数 #include<iostream> #include<algorithm> using namespace std; int compare(doubl ...
- stl中的for_each() 函数的注意事项
#include<iostream> using namespace std; #include"vector" #include"algorithm&quo ...
- stl里面stack的注意事项
1. pop是不返回元素的.因为不能返回引用,只能返回实例.而这个实例是在函数里面初始化的,所以必须在外面再赋值和初始化.而如果实例复制失败,会产生丢失. 2. 而top是可以返回引用的.实际上,返回 ...
- STL sort的comp函数注意事项
今天写了个题,结果碰巧re了,我眉头一皱发现事情并不简单. 原来我之前的comp写的都是错的. bool cmp(milkman a,milkman b) { return a.price<=b ...
随机推荐
- 【vue】中 $listeners 的使用方法
$listeners 的官方介绍: 包含了父作用域中的 (不含 .native 修饰器的) v-on 事件监听器.它可以通过 v-on="$listeners" 传入内部组件——在 ...
- SpringBoot - 添加定时任务
SpringBoot 添加定时任务 EXample1: import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.spri ...
- sockaddr_in 与 in_addr的区别
struct sockaddr_in {short int sin_family; /* 地址族 */unsigned short int sin_port; /* 端口号 */struct in_a ...
- 常用的Markdown语法
1.表格 | 左对齐标题 | 右对齐标题 | 居中对齐标题 | | :------| ------: | :------: | | 短文本 | 中等文本 | 稍微长一点的文本 | | 稍微长一点的文本 ...
- 《SSH网上商城》-视频目录--代码可以跑起来
本课程是2015年2月份的,就是14年底的. 课程第一天的代码-添加 jsp-api.jar servlet-api.jar就可以跑起来,环境 JDK1.7 和tomcat8, SSH网上商城\S ...
- Sprng4之JDBC--很原始的使用方法
\[www.dev1234.com]一头扎进Spring4视频教程\一头扎进Spring4源码\[www.java1234.com]<一头扎进Spring4>第九讲 源码\Spring40 ...
- SQL SERVER 2008 R2安装的时候提示“该实例名称MSSQLSERVER已在使用
SQL SERVER 2008安装的时候提示“该实例名称已在使用”解决办法._冷雨玫瑰_新浪博客---和这文章描述差不多http://blog.sina.com.cn/s/blog_672b419f0 ...
- response的字节流和字符流输入的区别和问题--02-response的outputStream输出数据的问题.avi
02-response的outputStream输出数据的问题.avi; [字节流] 用meta标签 第一段原始代码:写错: 03-response的Writer输出数据的问题.avi;[字符流输出] ...
- 判断GPS是否开启&转到设置GPS界面
/** * 判断GPS是否开启,GPS或者AGPS开启一个就认为是开启的 * @param context * @return true 表示开启 */ public static final boo ...
- thymeleaf资源加载问题(从Controller跳转)
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <me ...