c++ std
高中只是听说过stl,每次问老师老师都会说“有毒,千万别学”,于是stl有毒的言论深深的印在我脑海,看到就恐惧,于是一直没有学,但是大学后确实很多用到stl的地方必须去学习了。
现在想想老师当年的说法是可以理解的,相传stl速度上有所欠缺(与自己手写的数据结构作比较),毕竟OI的赛制比拼的不是时间,而是效率,同样的策略,使用stl可能就比使用自己写的数据结构少过一个测试点,一个测试点有多重要我是最清楚的2333往事不堪回首。
但是ACM不太一样,时间变得十分的宝贵,简单的题目直接上stl可能三分钟写完,自己手写要半个点,人与人就拉开差距了,难题一般都需要对高级数据结构进行定制,stl大家都用不上,不用太担心效率的问题。
下面进入正题
=======================
vector 是类似数组的存在,不过他是动态数组,在不确定数据量大小的时候十分好用
初始化
vector<int> nums;
vector<int> mynums(nums);
vector<int> rows(m,0);
vector<vector<char>> picture; //二维
int x=mynums.size();
插入&取出
nums.push_back(1);
int x=nums.pop_back();
遍历
for(int i=0;i<num.size();i++)
nums[i];
for(vector<int>::iterator it=nums.begin();it!=nums.end();it++)
cout<<*it;
===============================
unordered_map 是一个hash实现的映射(可以携带辅助数据)
===============================
unordered_set 是一个hash实现的数据存储器,快速判断数据存在性
===============================
set 是红黑树,logn的查找插入删除
默认的是左小右大,所以呢.begin是最小值,.rbegin是最大值
初始化
set<int> s;
插入&删除
s.insert(5);//会返回一个pair,first是迭代器,second是bool表示是否成功
s.erase(2);
s.clear();
遍历(中序遍历)
类似于vector
还可以反向遍历,用reverse_iterator
查找(返回迭代器,如果没找到,返回s.end())
it=s.find(5);
x=*it
摘自别人的博客,还没有测试,不理解为什么自定义比较规则要重载一对小括号。。。
http://blog.csdn.net/wangran51/article/details/88361606.自定义比较函数
(1)元素不是结构体:
例:
//自定义比较函数myComp,重载“()”操作符
struct myComp
{
bool operator()(const your_type &a,const your_type &b)
[
return a.data-b.data>0;
}
}
set<int,myComp>s;
......
set<int,myComp>::iterator it;
(2)如果元素是结构体,可以直接将比较函数写在结构体内。
例:
struct Info
{
string name;
float score;
//重载“<”操作符,自定义排序规则
bool operator < (const Info &a) const
{
//按score从大到小排列
return a.score<score;
}
}
set<Info> s;
......
set<Info>::iterator it;
===============================
map 是二叉树,带有映射关系
===============================
c++ std的更多相关文章
- 【NX二次开发】NX内部函数,libuifw.dll文件中的内部函数
本文分为两部分:"带参数的函数"和 "带修饰的函数". 浏览这篇博客前请先阅读: [NX二次开发]NX内部函数,查找内部函数的方法 带参数的函数: void U ...
- C++ std::set
std::set template < class T, // set::key_type/value_type class Compare = less<T>, // set::k ...
- C++ std::priority_queue
std::priority_queue template <class T, class Container = vector<T>, class Compare = less< ...
- C++ std::queue
std::queue template <class T, class Container = deque<T> > class queue; FIFO queue queue ...
- C++ std::multimap
std::multimap template < class Key, // multimap::key_type class T, // multimap::mapped_type class ...
- C++ std::map
std::map template < class Key, // map::key_type class T, // map::mapped_type class Compare = less ...
- C++ std::list
std::list template < class T, class Alloc = allocator > class list; List Lists are sequence co ...
- C++ std::forward_list
std::forward_list template < class T, class Alloc = allocator > class forward_list; Forward li ...
- C++ std::deque
std::deque template < class T, class Alloc = allocator > class deque; Double ended queue deque ...
- C++ std::array
std::array template < class T, size_t N > class array; Code Example #include <iostream> ...
随机推荐
- Three学习之曲线
曲线 属性 1. .arcLengthDivisions 当通过.getLengths计算曲线的累积段长度时,此值决定了分割的数量.为了确保在使用.getSpacedPoint等方法时的精度,如果曲线 ...
- C#监测方法执行效率
System.Diagnostics.Stopwatch watch = new Stopwatch(); watch.Start(); // 开始监视代码运行时间 //需要监测的代码 dothing ...
- RN打包的那些坑儿
Write By lz: Lz 寄语: RN虐我千百遍, 我待RN如初恋, 坑儿爬多了也就自然了 官方文档: http://reactnative.cn/docs/0.43/signed-apk-an ...
- 信息检索及DM必备知识总结:luncene
原文链接:http://blog.csdn.net/htw2012/article/details/17734529 有少量修改!如有疑问,请访问原作者. 一:信息检索领域: 信息检索和网络数据领域( ...
- 我的C++笔记(函数部分)
#include <iostream> #include <cmath>//C++的数学函数库 using namespace std; class Point{ public ...
- CorelDRAW X7软件中如何将图片剪贴到文字中
将 图片剪贴到文字中是平面设计常用的一种处理方法之一,将图片剪贴到文字中是指将图片置入到该文字,且图片的外轮廓是沿着文字的形状剪贴的,这种处理手法被广泛应用于排版设计中.本教程将带大家了解如何用Cor ...
- 操作ajax生成页面的一个问题
一般而言,js代码都放在页面的底部.在做项目的过程中,发现放在底部的代码没有执行,原来操作的是ajax生成的部分.这时候,页面加载js的顺序就要小心了.例子如下: <!doctype html& ...
- Apex语言(二)变量与常量
1.变量 凡是交给计算运算(处理)的数据就是变量,用来保存参加运算的数据和计算结果. 变量由变量名来标识. 变量名由字母数字和下划线组成,不能以数字开头. [正确]number,number1,num ...
- 「BZOJ3339」Rmq Problem(5366)
题目描述 输入 输出 样例输入 7 5 0 2 1 0 1 3 2 1 3 2 3 1 4 3 6 2 7 提示 这个题说来也挺有意思的 当时集训的时候遇到了一道类似的题,但是题意与此不同,我太菜了, ...
- Unicode编码,解释UCS、UTF、BMP、BOM等名词
(转载 谈谈Unicode编码,简要解释UCS.UTF.BMP.BOM等名词 这是一篇程序员写给程序员的趣味读物.所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级 ...