360


360真题

http://discuss.acmcoder.com/topic/58cd31e475bf559a0653f98f


http://www.jianshu.com/p/a3ffbc72d346

http://blog.csdn.net/cmershen/article/details/63686913


vector

1.push_back  在数组的最后添加一个数据

2.pop_back    去掉数组的最后一个数据

3.at                得到编号位置的数据

4.begin           得到数组头的指针

5.end             得到数组的最后一个单元+1的指针

6.front        得到数组头的引用

7.back            得到数组的最后一个单元的引用

8.max_size     得到vector最大可以是多大

9.capacity       当前vector分配的大小

10.size           当前使用数据的大小

11.resize         改变当前使用数据的大小,如果它比当前使用的大,者填充默认值

12.reserve      改变当前vecotr所分配空间的大小

13.erase         删除指针指向的数据项

14.clear          清空当前的vector

15.rbegin        将vector反转后的开始指针返回(其实就是原来的end-1)

16.rend          将vector反转构的结束指针返回(其实就是原来的begin-1)

17.empty        判断vector是否为空

18.swap         与另一个vector交换数据

3.2  详细的函数实现功能:其中vector c.

c.clear()         移除容器中所有数据。

c.empty()         判断容器是否为空。

c.erase(pos)        删除pos位置的数据

c.erase(beg,end) 删除[beg,end)区间的数据

c.front()         传回第一个数据。

c.insert(pos,elem)  在pos位置插入一个elem拷贝

c.pop_back()     删除最后一个数据。

c.push_back(elem) 在尾部加入一个数据。

c.resize(num)     重新设置该容器的大小

c.size()         回容器中实际数据的个数。

c.begin()           返回指向容器第一个元素的迭代器

c.end()             返回指向容器最后一个元素的迭代器


list

(http://blog.csdn.net/lskyne/article/details/10418823)

Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.

assign() 给list赋值

back() 返回最后一个元素

begin() 返回指向第一个元素的迭代器

clear() 删除所有元素

empty() 如果list是空的则返回true

end() 返回末尾的迭代器

erase() 删除一个元素

front() 返回第一个元素

get_allocator() 返回list的配置器

insert() 插入一个元素到list中

max_size() 返回list能容纳的最大元素数量

merge() 合并两个list

pop_back() 删除最后一个元素

pop_front() 删除第一个元素

push_back() 在list的末尾添加一个元素

push_front() 在list的头部添加一个元素

rbegin() 返回指向第一个元素的逆向迭代器

remove() 从list删除元素

remove_if() 按指定条件删除元素

rend() 指向list末尾的逆向迭代器

resize() 改变list的大小

reverse() 把list的元素倒转

size() 返回list中的元素个数

sort() 给list排序

splice() 合并两个list

swap() 交换两个list

unique() 删除list中重复的元素


dequeue

C++ Deque(双向队列)

是一种优化了的、对序列两端元素进行添加和删除操作的基本序列容器。它允许较为快速地随机访问,但它不像vector把所有的对象保存在一块连续的内存块,而是采用多个连续的存储块,并且在一个映射结构中保存对这些块及其顺序的跟踪。向deque两端添加或删除元素的开销很小。它不需要重新分配空间,所以向末端增加元素比vector更有效。

实际上,deque是对vector和list优缺点的结合,它是处于两者之间的一种容器。

Deque的特点:

(1)随机访问方便,即支持[ ]操作符和vector.at(),但性能没有vector好;

(2)可以在内部进行插入和删除操作,但性能不及list;

(3)可以在两端进行push、pop;

(4)相对于verctor占用更多的内存。

双向队列和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样)。

1.Constructors创建一个新双向队列

语法:

deque();//创建一个空双向队列

deque( size_type size );//创建一个大小为size的双向队列

deque( size_type num, const TYPE &val ); //放置num个val的拷贝到队列中

deque( const deque &from );//从from创建一个内容一样的双向队列

deque( input_iterator start, input_iterator end );

// start和end -创建一个队列,保存从start到end的元素。

2.Operators比较和赋值双向队列

//可以使用[]操作符访问双向队列中单个的元素

3.assign()设置双向队列的值

语法:

void assign( input_iterator start, input_iterator end);

//start和end指示的范围为双向队列赋值

void assign( Size num, const TYPE &val );//设置成num个val。

4.at()返回指定的元素

语法:

reference at( size_type pos );返回一个引用,指向双向队列中位置pos上的元素

5.back()返回最后一个元素

语法:

reference back();//返回一个引用,指向双向队列中最后一个元素

6.begin()返回指向第一个元素的迭代器

语法:

iterator begin();//返回一个迭代器,指向双向队列的第一个元素

7.clear()删除所有元素

8.empty()返回真如果双向队列为空

9.end()返回指向尾部的迭代器

10.erase()删除一个元素

语法:

iterator erase( iterator pos ); //删除pos位置上的元素

iterator erase( iterator start, iterator end ); //删除start和end之间的所有元素

//返回指向被删除元素的后一个元素

11.front()返回第一个元素的引用

12.get_allocator()返回双向队列的配置器

13.insert()插入一个元素到双向队列中

语法:

iterator insert( iterator pos, size_type num, const TYPE &val ); //pos前插入num个val值

void insert( iterator pos, input_iterator start, input_iterator end );

//插入从start到end范围内的元素到pos前面

14.max_size()返回双向队列能容纳的最大元素个数

15.pop_back()删除尾部的元素

16.pop_front()删除头部的元素

17.push_back()在尾部加入一个元素

18.push_front()在头部加入一个元素

19.rbegin()返回指向尾部的逆向迭代器

20.rend()返回指向头部的逆向迭代器

21.resize()改变双向队列的大小

22.size()返回双向队列中元素的个数

23.swap()和另一个双向队列交换元素

语法:

void swap( deque &target );//交换target和现双向队列中元素


queue、priority_queue

(http://blog.csdn.net/chao_xun/article/details/8037438)

一.queue模版类的定义在头文件中。

queue与stack模版非常类似,queue模版也需要定义两个模版参数,一个是元素类型,一个是容器类型,元素类型是必要的,容器类型是可选的,默认为dqueue类型。

定义queue对象的示例代码如下:

queueq1;

queueq2;

queue的基本操作有:

1.入队:如q.push(x):将x元素接到队列的末端;

2.出队:如q.pop() 弹出队列的第一个元素,并不会返回元素的值;

3,访问队首元素:如q.front()

4,访问队尾元素,如q.back();

5,访问队中的元素个数,如q.size();

二.优先队列

在头文件中,还定义了一个非常有用的模版类priority_queue(优先队列),优先队列与队列的差别在于优先队列不是按照入队的顺序出队,而是按照队列中元素的优先权顺序出队(默认为大者优先,也可以通过指定算子来指定自己的优先顺序)。

priority_queue模版类有三个模版参数,元素类型,容器类型,比较算子。其中后两个都可以省略,默认容器为vector,默认算子为less,即小的往前排,大的往后排(出队时序列尾的元素出队)。

定义priority_queue对象的示例代码如下:

priority_queueq1;

priority_queue >q2;

priority_queue,greater >q3;//定义小的先出队

priority_queue的基本操作均与queue相同

初学者在使用priority_queue时,最困难的可能就是如何定义比较算子了。如果是基本数据类型,或已定义了比较运算符的类,可以直接用STL的less算子和greater算子——默认为使用less算子,即小的往前排,大的先出队。如果要定义自己的比较算子,方法有多种,这里介绍其中的一种:重载比较运算符。优先队列试图将两个元素x和y代入比较运算符(对less算子,调用xy),若结果为真,则x排在y前面,y将先于x出队,反之,则将y排在x前面,x将先出队。


大数组

你这个数组申明在函数内部,属于局部变量,存放在了栈上,

看看数组占用的内存大小:1000000=1000*1000然后乘以int型数据长度

1000*1000*4byte约等于4M,

而栈的默认内存空间为1M左右,所以会导致内存溢出

解决这个问题,可以将数组申明在全局存储区或堆上即可

方法一:

    在VC的Project   setting里的link选项卡里把栈开大一点(windows里默认是4M)

方法二:

    声明成全局或static的,这两种变量不压栈,想开多大都可以

方法三:

int   *A   =   new   int[90000];

.....

delete   A;

方法四:

用vector

#include  

using   namespace   std;

void   main()

{

vector   A(90000);

A[0]   =   1;

}




常见头文件

#include <cstdio>

#include <cmath>

#include <algorithm>

http://blog.csdn.net/wlchen123/article/details/8219131

常见的:max、min、sort 、swap、

#include <iostream>

#include <cstring>

C++里的 cstring对应C语言的string.h

string.h是C中处理字符串的函数的声明,string是C++中string类的头文件,尽管在C++中包含string.h是允许的,但C++标准建议用头文件cstring来替代string.h

里面常用:

strcmp(a,b)==0  比较字符串是否相同,相同返回值是0,a>b返回正数;a<b返回负数

memset(a,0,sizeof(a));      把字符串清空(所有字符元素全变成\0)

strlen(a);          计算这个字符串的长度(到第一个\0为止)

strcpy

strcat:char * strncat ( char * destination, const char * source, size_t num );

Append characters from string

Appends the firstnumcharacters ofsourcetodestination, plus a terminating null-character.

If the length of the C string insourceis less thannum, only the content up to the terminating null-character is copied.


#include <map>

#include <string>

C++中,string头文件基本上已经包含在iostream中了。

但是,平时使用的时候建议加上#include(尤其在以下情况下)

1、使用string类型

2、使用cin、cout语句来输入输出string类型变量(注意,同时还需要#include)

3、使用memset()、strlen()、strcpy()、strcat等函数时

函数原型char *strcpy(char *dest,const char *src)


#include <stack>

#include <cctype>

#include <vector>

#include <queue>

#include <set>

#include <utility>

#include <cassert>

#include <numeric>

#include <sstream>


using namespace std;

#define Online_Judge

#define outstars cout << "***********************" << endl;

#define clr(a,b) memset(a,b,sizeof(a))

#define lson l , mid  , rt << 1

#define rson mid + 1 , r , rt << 1 | 1

#define mk make_pair

const int MAXN = 1000 + 50;

const int MAXS = 10000 + 50;

const int sigma_size = 26;

const long long LLMAX = 0x7fffffffffffffffLL;

const long long LLMIN = 0x8000000000000000LL;

const int INF = 0x7fffffff;

const int IMIN = 0x80000000;

const int inf = 1 << 30;

#define eps 1e-10

const long long MOD = 1000000000 + 7;

const int mod = 10007;

typedef long long LL;

const double PI = acos(-1.0);

typedef double D;

typedef pair pii;

typedef vector vec;

typedef vector mat;

typedef vector vs;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,924评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,781评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,813评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,264评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,273评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,383评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,800评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,482评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,673评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,497评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,545评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,240评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,802评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,866评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,101评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,673评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,245评论 2 341

推荐阅读更多精彩内容

  • 前言: 详细介绍: List:元素有放入顺序,元素可重复Map:元素按键值对存储,无放入顺序Set:元素无放入顺序...
    YBshone阅读 8,615评论 0 17
  • 容器的概念所谓STL容器,即是将最常运用的一些数据结构(data structures)实现出来。容器是指容纳特定...
    饭饭H阅读 372评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,547评论 18 399
  • Scala的集合类可以从三个维度进行切分: 可变与不可变集合(Immutable and mutable coll...
    时待吾阅读 5,792评论 0 4
  • 文/月宝 记得当初,初来乍到。 背着肩上的行李,握着地图,立于上海车水马龙的闹市街头,看每一个方向都是高楼夹拥的街...
    Sheryl月公子阅读 522评论 0 4