-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathatom.xml
1121 lines (1032 loc) · 240 KB
/
atom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Scannery的博客</title>
<subtitle>让我看看你是否学有所成</subtitle>
<link href="/atom.xml" rel="self"/>
<link href="https://github.com/Scannery/Scannery.github.io/"/>
<updated>2017-03-04T05:28:13.785Z</updated>
<id>https://github.com/Scannery/Scannery.github.io/</id>
<author>
<name>Scannery</name>
</author>
<generator uri="http://hexo.io/">Hexo</generator>
<entry>
<title>逼乎回答选集</title>
<link href="https://github.com/Scannery/Scannery.github.io/2017/03/04/zhihu1/"/>
<id>https://github.com/Scannery/Scannery.github.io/2017/03/04/zhihu1/</id>
<published>2017-03-04T03:37:37.061Z</published>
<updated>2017-03-04T05:28:13.785Z</updated>
<content type="html"><blockquote>
<p>先挂一个侵删</p>
</blockquote>
<p> 最近发懒,知乎又刷的比较多,干脆搬点知乎上的回答过来吧。</p>
<a id="more"></a>
<h1 id="生活类"><a href="#生活类" class="headerlink" title="生活类"></a>生活类</h1><h2 id="如何评价尼日利亚程序员在入境美国的时候被考平衡二叉树?"><a href="#如何评价尼日利亚程序员在入境美国的时候被考平衡二叉树?" class="headerlink" title="如何评价尼日利亚程序员在入境美国的时候被考平衡二叉树?"></a><a href="https://www.zhihu.com/question/56471869" target="_blank" rel="external">如何评价尼日利亚程序员在入境美国的时候被考平衡二叉树?</a></h2><p><a href="http://top.jobbole.com/36354/" target="_blank" rel="external">在美国入境被考算法,非洲程序员的亲身经历 - 资讯 - 伯乐在线</a><br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">你绝对想不到!玻璃渣只要1个程序员就能撑起项目组的秘诀竟然是。</span><br><span class="line"></span><br><span class="line">震惊!美国竟然是这样筛选程序员的。</span><br><span class="line"></span><br><span class="line">活久见!尼日利亚黑人进入美国后,竞被如此盘问</span><br></pre></td></tr></table></figure></p>
<p> 抖机灵式回答,明天我要去UC报道</p>
<h2 id="有哪些知名建筑的入口不在一楼?"><a href="#有哪些知名建筑的入口不在一楼?" class="headerlink" title="有哪些知名建筑的入口不在一楼?"></a><a href="https://www.zhihu.com/question/55820228" target="_blank" rel="external">有哪些知名建筑的入口不在一楼?</a></h2><p>比如理查德·迈耶的道格拉斯住宅。纯粹好奇想收集一些<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">举个不知名的例子吧,西安电子科技大学南校区的A楼和B楼。据说曾经获得过鲁班奖的建筑。这两栋楼的特点是楼层是一个</span><br><span class="line">斜面。东边高,西边低。底层入口有三个,分别是1,2,3层(参考下面的图)。楼层是斜面有以下的好处。</span><br><span class="line">一方面,教室可以顺着楼层阶梯化,省去了靠后座位磊砖的麻烦。</span><br><span class="line">第二方面,据说可以节约材料</span><br><span class="line">其他也不知道了,我也不是学建筑的……</span><br></pre></td></tr></table></figure></p>
<p> 第三方面,可以给新同学一个下马威</p>
<h2 id="我读的书也不少,为什么我的写作水平上不去,我甚至连作文都写不好?"><a href="#我读的书也不少,为什么我的写作水平上不去,我甚至连作文都写不好?" class="headerlink" title="我读的书也不少,为什么我的写作水平上不去,我甚至连作文都写不好?"></a><a href="https://www.zhihu.com/question/56536933" target="_blank" rel="external">我读的书也不少,为什么我的写作水平上不去,我甚至连作文都写不好?</a></h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">我最近也在尝试,提高自己的写作能力,简单说一下我的做法。</span><br><span class="line">1.多写。写完整体看一眼,想想怎么写可以更好。哪些地方写多了,哪些地方写少了。</span><br><span class="line">2.多读。读谁呢?我目前在读鲁迅的东西。你的话找本作文选看看?抠句子的读,想想你会怎么写,人这么写好在哪里。尽</span><br><span class="line">量读本土的作者,网络小说也行,别读古籍和译本。</span><br><span class="line">3.说个政治不正确的观点,多写短句,注意分段。你要是阅卷老师,也懒得看黑压压的一大片。</span><br></pre></td></tr></table></figure>
<p> 所谓天下文章一大抄,天下游戏一大抄,天下剧本一大抄。没错!欢迎收看我的《九生九世百里桃花》</p>
<h2 id="读哪些书有助于理解《仁王》的背景故事?"><a href="#读哪些书有助于理解《仁王》的背景故事?" class="headerlink" title="读哪些书有助于理解《仁王》的背景故事?"></a><a href="https://www.zhihu.com/question/56202839" target="_blank" rel="external">读哪些书有助于理解《仁王》的背景故事?</a></h2><p>一直以来对日本战国史感兴趣,读过一部分《宛如梦幻》,但对于一本比一本厚的《德川家康》、《织田信长》会感到束手<br>无策,但对于《仁王》中的赤鬼井伊直政、东西无双以及岛左近都颇感兴趣,除了游戏中提供的资料外,游戏之外是否有哪<br>些涵括了这些人物故事的书籍值得一看?<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">日本战国题材的东西有很多,不是很建议去看书。因为有大把的剧和游戏给你看,更容易接受。</span><br><span class="line">1.日本战国的前段时间比较无聊。建议直接去看安土桃城时代的东西。</span><br><span class="line">仁王的时期是秀吉死后。大阪丰臣,东京德川的两大集团割据时期。大概是1598年到1616年之间</span><br><span class="line">2.游戏认准koei,也就是光荣。推荐太阁立志传,不过比较难于上手。不喜欢策略类的话建议找无双系列。</span><br><span class="line">3.剧认准大河剧,日本的历史剧,对待历史也比较严谨。大概是一年一番的样子。建议百度百科看吧我也懒的搬。近期的大</span><br><span class="line">河剧B站可以搜到。</span><br></pre></td></tr></table></figure></p>
<p> 日本战国史,认准太阁立志传</p>
<h1 id="游戏类"><a href="#游戏类" class="headerlink" title="游戏类"></a>游戏类</h1><h2 id="为什么会有风暴英雄什么都好,就是不好玩这种说法?"><a href="#为什么会有风暴英雄什么都好,就是不好玩这种说法?" class="headerlink" title="为什么会有风暴英雄什么都好,就是不好玩这种说法?"></a><a href="https://www.zhihu.com/question/56023513" target="_blank" rel="external">为什么会有风暴英雄什么都好,就是不好玩这种说法?</a></h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line">首先,风暴不火,很大一部分原因,是因为moba市场趋于饱和,留给他的蛋糕也不大。第二大部分的原因,测试期间,游戏</span><br><span class="line">确实很简陋,基本是,游戏还没做完,就上线了,给人留下的映像很差。就目前来说。风暴的游戏质量还是很高的。</span><br><span class="line"></span><br><span class="line">简单说一下我认为风暴存在的问题:</span><br><span class="line">1,社交性比较差。</span><br><span class="line">这是一个团队游戏,吃配合,1+1是大于2的。这点有点像山口山。有一个好基友双排,俩白金都能跟大师叫板。所以能认识</span><br><span class="line">些人蛮重要的。而且有基友在,游戏玩的也更有劲了</span><br><span class="line">社交性玻璃渣确实也鼓励过,团联的青铜坐骑就是一例。不过我想有个公会啊,战队啊,自动团队锦标赛啊什么的更好。</span><br><span class="line"></span><br><span class="line">2,装逼渠道少</span><br><span class="line">这游戏除了拿天梯成绩装逼,其他能拿出来装逼的东西好像也没了。而天梯顶的大神永远是少数人,大多数中游的鸡和底层</span><br><span class="line">的鸡饲料可没的装。</span><br><span class="line">我有一个想法:</span><br><span class="line">现在的mvp系统,别只在游戏内放。建议放在比赛历史里</span><br><span class="line">还有游戏结束后,经验界面出来的那个条。</span><br><span class="line"></span><br><span class="line">3,个人得到的正反馈少</span><br><span class="line">传统moba有经济,我装备好,我人头多,我感觉我很牛逼。wow有skada,我dps彪第一,治疗量爆炸,我感觉我很牛逼。国</span><br><span class="line">产页游,全民国战,皇城pk,一刀99999999999,我感觉我很牛逼?而风暴要少的可怜了。</span><br></pre></td></tr></table></figure>
<p>实际上这些堆字,我拿来回答过不少问题,这里挑了赞最多的一个</p>
<h2 id="如何看待炉石即将将6张经典卡牌置入荣誉室的举措?"><a href="#如何看待炉石即将将6张经典卡牌置入荣誉室的举措?" class="headerlink" title="如何看待炉石即将将6张经典卡牌置入荣誉室的举措?"></a><a href="https://www.zhihu.com/question/55916868" target="_blank" rel="external">如何看待炉石即将将6张经典卡牌置入荣誉室的举措?</a></h2><p>女王、螺丝、碧蓝幼龙、隐藏、力代、冰枪将无法在标准模式使用,这一改动无疑打了之前“经典包永不退环境”的脸,这一<br>举措必将引起轩然大波,知乎众怎么看待这次的补丁?</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">说白了就是改卡呗。不过暴爹这次懒的把卡直接改弱了,直接禁+发补偿。省的咱们右键分解一遍。</span><br><span class="line">总体而言改旧卡有三个好处:</span><br><span class="line">1.赚钱,吃相难看这点真心洗不了,我也懒得多解释。</span><br><span class="line">2.给环境带来新鲜血液。蓝龙女王这种货色,你还想再用几年吗?反正我看着挺烦了。尤其是蓝龙,盗贼从头到尾几乎没一</span><br><span class="line">个卡组扔过蓝龙。甚至我还想说,这些东西滚蛋蛮好的。</span><br><span class="line">顺便心疼一下诺森德,没了蓝龙他咋办呀。</span><br><span class="line">3.降低新手门槛。</span><br><span class="line"></span><br><span class="line">总而言之,我觉得改卡不是一件坏事。套路没了可以再换,这是好事。套路从头到尾一直不换,这才是恶心的地方。</span><br><span class="line"></span><br><span class="line">可以回忆一下天国的咆哮德,奴隶战。卡进禁卡表了,狂野还能爽爽。卡被改了,那才是真玩不到了。</span><br></pre></td></tr></table></figure>
<p>这个问题很多答的都挺好,总之暴雪又卖节操</p>
<h2 id="风暴英雄的logo的含义是什么?"><a href="#风暴英雄的logo的含义是什么?" class="headerlink" title="风暴英雄的logo的含义是什么?"></a><a href="https://www.zhihu.com/question/55696925" target="_blank" rel="external">风暴英雄的logo的含义是什么?</a></h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">萨尔纳迦神器乘以3。右下神器代表wow系列,上面刻着霜之哀伤的符文。左下神器代表星际,图案是刀锋女王后背的骨翼。</span><br><span class="line">最上神器代表暗黑,图案是天使的翅膀。</span><br></pre></td></tr></table></figure>
<p> 图懒得配了,自己百度吧。</p>
<h2 id="高中老师如何用大司马的口气上课?"><a href="#高中老师如何用大司马的口气上课?" class="headerlink" title="高中老师如何用大司马的口气上课?"></a><a href="https://www.zhihu.com/question/55879865" target="_blank" rel="external">高中老师如何用大司马的口气上课?</a></h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">各位同学大家好,我就是金牌老师皮老师。</span><br><span class="line">哎,那位同学他上课睡觉,很舒服,来,我们皮他。同学,上来讲讲这个葵花三式。</span><br><span class="line">这个同学他搞不清楚状况,就是那个正方形公式,我这样讲你懂了吧?</span><br><span class="line">问题不大,嗯,对,不急。慢慢写,就是这个节奏。</span><br><span class="line">哇……很烦,你怎么写成这样。愣头青,你这个同学就是个瓜皮。</span><br><span class="line">你怎么还闹开了。同学们,这个人,他,他石乐志。他皮任他皮,咱刷咱的题,他横任他横,告他班主任。这节课自习同学</span><br><span class="line">们。</span><br><span class="line"></span><br><span class="line">同学们我回来了。什么?为难你们,不存在的。我啊故意,制造点教学事故,这个教学气氛啊,就很皮。你们才能学到东</span><br><span class="line">西。</span><br><span class="line">这个啊,就是我独创三角形教学,就是在课堂,办公室,食堂,画个三角形。先自习再上课,25分钟300个知识点,一教就</span><br><span class="line">是秒会。</span><br><span class="line">这节课我们讲司马缸砸光。嘿嘿……这个司马缸,是用来来吃饭的,砸出光,不存在的。什么……我看错了,嘿嘿……这波和编</span><br><span class="line">书老师配合不好,我们可以来波下课。跑了跑了……</span><br></pre></td></tr></table></figure>
<p> 我90%的赞来自这个回答……</p>
<h1 id="编程类"><a href="#编程类" class="headerlink" title="编程类"></a>编程类</h1><h2 id="c语言中,形参就是变量吗?为什么说函数的形参可以是指针类型?"><a href="#c语言中,形参就是变量吗?为什么说函数的形参可以是指针类型?" class="headerlink" title="c语言中,形参就是变量吗?为什么说函数的形参可以是指针类型?"></a><a href="https://www.zhihu.com/question/56406455" target="_blank" rel="external">c语言中,形参就是变量吗?为什么说函数的形参可以是指针类型?</a></h2><p>萌新,自己学到指针时,各种概念真的把我弄蒙了,查了许多还是没弄懂,求指教,谢谢了。</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">记住这些就可以:</span><br><span class="line">1.函数的形参,和传入的值是两个变量,占用内存中不同的位置,他们的值相等。</span><br><span class="line">2.函数的形参,会在函数调用结束后,被回收。</span><br><span class="line">3.指针也是变量,指针的值是内存中的地址。</span><br><span class="line">比如调用一个简单的函数</span><br><span class="line">void func(int a)</span><br><span class="line">&#123;&#125;</span><br><span class="line">func(b)</span><br><span class="line">其中,a和b的值相等,但处于不同的地址,改变a不会改变b。</span><br><span class="line"></span><br><span class="line">调用一个带指针的函数</span><br><span class="line">int *p = 3</span><br><span class="line">上面一句话定义了两片内存。一片存储变量,值为3,一片存储变量p的值,值是变量3的在内存中的位置。</span><br><span class="line">void func(int *q)</span><br><span class="line">&#123; q = pos&#125;</span><br><span class="line">func(p)</span><br><span class="line">上边这个函数和上述ab相同,只改变了形参,p的值不变,*p的值也不变,仅仅是形式参数,也就是q变了。</span><br><span class="line">void func(int *q)</span><br><span class="line">&#123; *q = 5;</span><br><span class="line">&#125;</span><br><span class="line">func(p)</span><br><span class="line">上面这个函数中。由于p,q二值相等,他们的值是内存中的同一地址。意味着*q,*p的结果是同一个值。改变*q也就改变了*p。</span><br></pre></td></tr></table></figure>
<p> 我觉得这里讲的还行,确实这些概念容易混淆。</p>
<h2 id="如何通俗易懂地解释什么是算法?"><a href="#如何通俗易懂地解释什么是算法?" class="headerlink" title="如何通俗易懂地解释什么是算法?"></a><a href="https://www.zhihu.com/question/55136787" target="_blank" rel="external">如何通俗易懂地解释什么是算法?</a></h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">算法是CS与实际问题之间的桥梁。就像厨艺之于菜肉和食物</span><br></pre></td></tr></table></figure>
<p> 够通俗吧</p>
<h2 id="关于走c-后台这条路的迷茫?"><a href="#关于走c-后台这条路的迷茫?" class="headerlink" title="关于走c++后台这条路的迷茫?"></a><a href="https://www.zhihu.com/question/55882625" target="_blank" rel="external">关于走c++后台这条路的迷茫?</a></h2><p>发现自己还是想走c++后台,目前应该先学习什么,加深c语言的基础、加深c++的学习、还是入门linux,或者说如果我想以实战项目入手,有哪些资源比较合适?</p>
<blockquote>
<p>原题太长了,就不全复制了</p>
</blockquote>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">我是大四的,去年参加了秋招,坐标某不知名211院校,同c后端。</span><br><span class="line">首先告诉你,不会。因为大部分公司对应届生的要求并不高,懂一门主流语言,基础底子好一点,多刷点题,就ok了。即使</span><br><span class="line">你走后端这条路走不顺,也可以仅凭c++找到一份工作。</span><br><span class="line">其次,后端这条路并不好走,基本只有大公司和游戏公司在招也是现实,招的岗位并不多也是现实。有实习经历是很大的加</span><br><span class="line">分项,但没有也不是不行。尽力去找吧。</span><br><span class="line">大公司招实习会比较关心你的出身,当然技术好,肯定也是可以找到的。实习要求其实并不高。</span><br><span class="line">c后端先把unp,apue,tcp/ip详解刷一遍吧,书名不懂问度。然后自己尝试搞个项目,多上git看看大牛们的代码。</span><br><span class="line">但最重要还是打好基础!!算法,操作系统,网络,语言基础!一定要掌握!多去刷刷题!比什么实习经历,项目要重要的</span><br><span class="line">多。</span><br></pre></td></tr></table></figure>
<p> 去学java和php吧</p>
<h1 id="杂文类"><a href="#杂文类" class="headerlink" title="杂文类"></a>杂文类</h1><h2 id="如何以“我今年20岁”为开头写一篇文章?"><a href="#如何以“我今年20岁”为开头写一篇文章?" class="headerlink" title="如何以“我今年20岁”为开头写一篇文章?"></a><a href="https://www.zhihu.com/question/55738505" target="_blank" rel="external">如何以“我今年20岁”为开头写一篇文章?</a></h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">大家好,我是mc成风,一首《我今年二十岁》送给大家:</span><br><span class="line">我,今年二十岁。</span><br><span class="line">上,升仙问天地。</span><br><span class="line">下,笔销生死簿。</span><br><span class="line">中,继皇任人君。</span><br><span class="line">千军人马我麾下喝。</span><br><span class="line">万里江山我掌中握。</span><br><span class="line">外,服役征边关,策马越过戈壁滩。</span><br><span class="line">内,治世整朝纲,英武霸气美名扬。</span><br><span class="line"></span><br><span class="line">一人我风中饮酒醉。</span><br><span class="line">想我一生为了谁。</span><br><span class="line">上朝堂,我告天下。</span><br><span class="line">弃皇位,我辞帝京。</span><br><span class="line">只为学得挖掘机,借问路人哪家强?</span><br><span class="line">学挖掘机去蓝翔啊,去!蓝!翔!</span><br></pre></td></tr></table></figure>
<p>奥力给,老铁没毛病</p>
<h2 id="如何以“树枝上化生人首,如花,不解语,人借问,笑而已,频笑辄落。”为开头写一篇故事?"><a href="#如何以“树枝上化生人首,如花,不解语,人借问,笑而已,频笑辄落。”为开头写一篇故事?" class="headerlink" title="如何以“树枝上化生人首,如花,不解语,人借问,笑而已,频笑辄落。”为开头写一篇故事?"></a><a href="https://www.zhihu.com/question/55014010" target="_blank" rel="external">如何以“树枝上化生人首,如花,不解语,人借问,笑而已,频笑辄落。”为开头写一篇故事?</a></h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">树枝上化生人首,如花,不解语,人借问,笑而已,频笑辄落。一少年过而咏,“苟日新,日日新,又日新”。花不解而笑。</span><br><span class="line">少年惑之,曰,“苟全性命于乱世,不求闻达于诸侯”。花仍笑。少年继而曰,“苟……”。花则落。少年悦,以为佳句,遂频咏</span><br><span class="line">之。</span><br></pre></td></tr></table></figure>
<p>苟…… 苟富贵,勿相忘</p>
<h3 id="知乎主页"><a href="#知乎主页" class="headerlink" title="知乎主页"></a><a href="https://www.zhihu.com/people/cheng-feng-sang/activities" target="_blank" rel="external">知乎主页</a></h3></content>
<summary type="html">
<blockquote>
<p>先挂一个侵删</p>
</blockquote>
<p> 最近发懒,知乎又刷的比较多,干脆搬点知乎上的回答过来吧。</p>
</summary>
</entry>
<entry>
<title>爱迪生发明的是黑暗</title>
<link href="https://github.com/Scannery/Scannery.github.io/2017/01/09/jutou/"/>
<id>https://github.com/Scannery/Scannery.github.io/2017/01/09/jutou/</id>
<published>2017-01-09T13:19:19.048Z</published>
<updated>2017-03-04T05:19:55.844Z</updated>
<content type="html"><p>如有侵权,请联系我。</p>
<blockquote>
<p>禁止转载</p>
</blockquote>
<h1 id="第一集"><a href="#第一集" class="headerlink" title="第一集"></a>第一集</h1><p>我叫大宝,这是我的搭档小贝。我们是<strong>忘了爱</strong>组合</p>
<p>我们是一组相声演员。欢迎来到我们的演出,よろしくお願いします!</p>
<p>虽然说,话题有点突兀,请问养什么宠物,可以排解<strong>单身的寂寞</strong>呢</p>
<a id="more"></a>
<p><img src="http://i1.piimg.com/567571/1fe2504c706ef0e0.png" alt=""></p>
<p>观众们觉得很有道理,于是他们转身走了。</p>
<p><img src="http://i1.piimg.com/567571/1901923fb19f18c8.png" alt=""></p>
<p>同村的二楞哥负责下一场演出。他看起来非常兴奋,似乎已经抑制不住体内的洪荒之力了。</p>
<p><img src="http://p1.bqimg.com/567571/a174ff811d1947c2.png" alt=""></p>
<p>身边的翠花惊呆了,<strong>场面一度非常尴尬</strong></p>
<p>这样的傻缺可不常见了。要能和他关系好,不仅能借钱,也许还能借女人。</p>
<p>想到这里,我觉得<strong>这个朋友我交腚了</strong>。</p>
<p><img src="http://p1.bpimg.com/567571/6767c2e98533bf88.png" alt=""></p>
<p>还好河边放起的烟花化解了尴尬。</p>
<p>我在一家饭馆找到了二楞哥,他说</p>
<p><img src="http://i1.piimg.com/567571/2a704fee5d55da92.png" alt=""></p>
<p>我的脸上露出了G胖的微笑</p>
<p>二楞哥给我带来了好运。第二天早上,我被一个经纪公司签约。</p>
<p>刚进公司,我就感受到了公司里激烈竞争的氛围</p>
<p><img src="http://p1.bpimg.com/567571/55b26a86e5f5eb7f.png" alt=""></p>
<p>我见到了我们的老板,他的专业程度让我无从挑剔</p>
<p><img src="http://p1.bpimg.com/567571/f98211406599b422.png" alt=""></p>
<p>我们的才华得到了施展</p>
<p><img src="http://i1.piimg.com/567571/1d04caf9bd992462.png" alt=""></p>
<p>等等,这个车好像不太对。</p>
<h1 id="第二集"><a href="#第二集" class="headerlink" title="第二集"></a>第二集</h1><p>今天到夜店里打杂,老板说,外边天气不错,所以</p>
<p><img src="http://p1.bpimg.com/567571/57a00a2b75f21081.png" alt=""></p>
<p>我感到难以反驳。</p>
<p><img src="http://i1.piimg.com/567571/9813584d6c3870c3.png" alt=""></p>
<p>我的内心非常失落</p>
<p>哎,等等</p>
<p>那是什么声音</p>
<p>(啊……恩……啊……)</p>
<p>看来是有人练高音</p>
<p>想到这里,我决定多听一会儿</p>
<p><img src="http://p1.bpimg.com/567571/97ec920d089caeaf.png" alt=""></p>
<p>手机铃突然响了,场面一度非常尴尬。</p>
<p>电话的那头是波多野结衣</p>
<p><img src="http://p1.bpimg.com/567571/d2e833c5a0d995a1.png" alt=""></p>
<h1 id="我写不下去了"><a href="#我写不下去了" class="headerlink" title="我写不下去了"></a>我写不下去了</h1><p> 这是一部很正的剧,本来打算写到第三集的。可是剧中精华的部分又很难搞笑的起来。既然我写不好,干脆就半途而废了,</p>
<p> 我印象里,好久没见这种泛黄相片色调的剧了。相比大多日剧里的那种</p>
<p> 本剧的镜头应用非常的美,无论是微微摇晃的特写,还是跟主角一路行走的长镜。</p>
<p> 相比于剧集,这更像一部长电影。</p>
<h3 id="下篇-还没出"><a href="#下篇-还没出" class="headerlink" title="下篇 还没出~"></a><a href="">下篇</a> 还没出~</h3></content>
<summary type="html">
<p>如有侵权,请联系我。</p>
<blockquote>
<p>禁止转载</p>
</blockquote>
<h1 id="第一集"><a href="#第一集" class="headerlink" title="第一集"></a>第一集</h1><p>我叫大宝,这是我的搭档小贝。我们是<strong>忘了爱</strong>组合</p>
<p>我们是一组相声演员。欢迎来到我们的演出,よろしくお願いします!</p>
<p>虽然说,话题有点突兀,请问养什么宠物,可以排解<strong>单身的寂寞</strong>呢</p>
</summary>
</entry>
<entry>
<title>插入排序,归并排序,与复杂度O(n)的排序</title>
<link href="https://github.com/Scannery/Scannery.github.io/2016/11/28/sort/"/>
<id>https://github.com/Scannery/Scannery.github.io/2016/11/28/sort/</id>
<published>2016-11-28T10:01:21.438Z</published>
<updated>2016-11-29T05:51:52.683Z</updated>
<content type="html"><blockquote>
<p>本文主要提供常见的排序方式,快速排序请参考 <a href="http://scannery.github.io/2016/06/12/cplus4/" target="_blank" rel="external">此文</a></p>
</blockquote>
<h1 id="插入排序"><a href="#插入排序" class="headerlink" title="插入排序"></a>插入排序</h1><h3 id="1-插入排序简介"><a href="#1-插入排序简介" class="headerlink" title="1.插入排序简介"></a>1.插入排序简介</h3><p> 插入排序是一种简单的排序,复杂度为O(n2)</p>
<blockquote>
<p>插入排序适合小型数列。</p>
</blockquote>
<p> 本文使用的流程图网站为:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">http://www.processon.com/</span><br></pre></td></tr></table></figure>
<a id="more"></a>
<p> 流程图如下</p>
<p> <img src="http://p1.bpimg.com/1949/481c520340442521.png" alt="Markdown"></p>
<h3 id="2-插入排序的实现"><a href="#2-插入排序的实现" class="headerlink" title="2.插入排序的实现"></a>2.插入排序的实现</h3><p> C语言实现插入排序<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line">void insert_sort(int *arr, int arrlen)</span><br><span class="line">&#123;</span><br><span class="line"> int i = 1;</span><br><span class="line"> int *j;</span><br><span class="line"> int swap_num;</span><br><span class="line"></span><br><span class="line"> while (i &lt; arrlen)</span><br><span class="line"> &#123;</span><br><span class="line"> for (j = arr+i; j != arr; j--)</span><br><span class="line"> &#123;</span><br><span class="line"> if (*j &lt; *(j - 1))</span><br><span class="line"> &#123;</span><br><span class="line"> swap_num = *j;</span><br><span class="line"> *j = *(j - 1);</span><br><span class="line"> *(j - 1) = swap_num;</span><br><span class="line"> &#125;</span><br><span class="line"> else break;</span><br><span class="line"> &#125;</span><br><span class="line"> i++;</span><br><span class="line"></span><br><span class="line"> &#125;</span><br><span class="line"> return;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p>
<h1 id="归并排序"><a href="#归并排序" class="headerlink" title="归并排序"></a>归并排序</h1><p> 归并排序采用了分治的策略,首先,将数组分成有序数列的集合</p>
<blockquote>
<p>在这里,所谓有序数列的集合,一般就是按二分法,得到的单个元素,需要log2(n)次</p>
</blockquote>
<p> 然后,将得到的各有序数列两两整合,形成新的有序数列。再用新的有序数列进行两两整合……直到留下一个数列为止</p>
<blockquote>
<p>两两整合一个有序数列,需要 n 次。</p>
</blockquote>
<p> 其总体的复杂度为 O(nlog2(n))</p>
<blockquote>
<p>归并排序,适合大量,不重复,上下限大的数据的排序,有快速排序相似。</p>
</blockquote>
<h3 id="1-归并排序流程介绍"><a href="#1-归并排序流程介绍" class="headerlink" title="1. 归并排序流程介绍"></a>1. 归并排序流程介绍</h3><p> 一图流:</p>
<p> <img src="http://p1.bpimg.com/1949/645c77c1cbeac76c.png" alt=""></p>
<h3 id="2-用C实现归并排序"><a href="#2-用C实现归并排序" class="headerlink" title="2. 用C实现归并排序"></a>2. 用C实现归并排序</h3><p> 这里对归并排序的接口进行了封装,使之符合排序算法的统一形式。<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br></pre></td><td class="code"><pre><span class="line">void merge(int *arr,int *temp,int start,int middle,int end)</span><br><span class="line">&#123;</span><br><span class="line"> int i,j,k;</span><br><span class="line"></span><br><span class="line"> i = start;</span><br><span class="line"> j = start;</span><br><span class="line"> k = middle + 1;</span><br><span class="line"> while ((j &lt;= middle) &amp;&amp; (k &lt;= end))</span><br><span class="line"> &#123;</span><br><span class="line"> if (*(arr + j) &lt;= *(arr + k)) *(temp + i++) = *(arr + j++);</span><br><span class="line"> else *(temp + i++) = *(arr + k++);</span><br><span class="line"> &#125;</span><br><span class="line"> while (j &lt;= middle) *(temp + i++) = *(arr + j++);</span><br><span class="line"> while (k &lt;= end) *(temp + i++) = *(arr + k++);</span><br><span class="line"> for (i = start; i &lt;= end; i++) *(arr + i) = *(temp + i);</span><br><span class="line"> return;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">void divide(int *arr, int *temp, int start, int end)</span><br><span class="line">&#123;</span><br><span class="line"> if (start == end) return;</span><br><span class="line"> else</span><br><span class="line"> &#123;</span><br><span class="line"> int middle = (start + end) / 2;</span><br><span class="line"> divide(arr, temp, start, middle);</span><br><span class="line"> divide(arr, temp, middle+1, end);</span><br><span class="line"> merge(arr, temp, start, middle, end);</span><br><span class="line"> &#125;</span><br><span class="line"> return;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">void merge_sort(int *arr, int arr_len)</span><br><span class="line">&#123;</span><br><span class="line"> int *temp = new int[arr_len];</span><br><span class="line"> for (int i = 0; i &lt; arr_len; i++) *(temp + i) = *(arr + i);</span><br><span class="line"> divide(arr, temp, 0, arr_len-1);</span><br><span class="line"> delete [] temp;</span><br><span class="line"> return;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p>
<h1 id="O(n)的有限序列排序"><a href="#O(n)的有限序列排序" class="headerlink" title="O(n)的有限序列排序"></a>O(n)的有限序列排序</h1><p> 这种排序方式,要求数组里所有的数,都在指定区间M,N之间的。</p>
<blockquote>
<p>在实际的使用这种方式的时候,我们希望 M,N 尽量接近,且数组的数量 n 尽量的大</p>
</blockquote>
<p> 这种方式实际上是对数列中的数进行计数,然后从小到大进行展开。但复杂度,只有O(n)</p>
<blockquote>
<p>在某个公司的笔试题中,问到过这个问题</p>
</blockquote>
<p> 用C实现这种排序:<br><figure class="highlight plain"><figcaption><span>sort</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">void Onsort(int *arr, int arr_len,int minimum,int maximum)</span><br><span class="line">&#123;</span><br><span class="line"> int length = maximum - minimum + 1;</span><br><span class="line"> int *p = new int[length];</span><br><span class="line"> for (int i = 0; i &lt; length; i++) *(p+i) = 0;</span><br><span class="line"> for (int i = 0; i &lt; arr_len; i++) (*(p + (*(arr + i) - minimum)))++;</span><br><span class="line"></span><br><span class="line"> int count = 0;</span><br><span class="line"> for (int i = 0; i &lt; length; i++)</span><br><span class="line"> &#123;</span><br><span class="line"> if (*(p + i) != 0)</span><br><span class="line"> &#123;</span><br><span class="line"> for (int j = 1; j &lt;= *(p + i); j++)</span><br><span class="line"> &#123;</span><br><span class="line"> *(arr + count) = i + minimum;</span><br><span class="line"> count++;</span><br><span class="line"> &#125;</span><br><span class="line"> &#125;</span><br><span class="line"> &#125;</span><br><span class="line"> delete [] p;</span><br><span class="line"> return; </span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p>
<h3 id="下篇-敬请期待"><a href="#下篇-敬请期待" class="headerlink" title="下篇 敬请期待~"></a><a href="#">下篇</a> 敬请期待~</h3></content>
<summary type="html">
<blockquote>
<p>本文主要提供常见的排序方式,快速排序请参考 <a href="http://scannery.github.io/2016/06/12/cplus4/">此文</a></p>
</blockquote>
<h1 id="插入排序"><a href="#插入排序" class="headerlink" title="插入排序"></a>插入排序</h1><h3 id="1-插入排序简介"><a href="#1-插入排序简介" class="headerlink" title="1.插入排序简介"></a>1.插入排序简介</h3><p> 插入排序是一种简单的排序,复杂度为O(n2)</p>
<blockquote>
<p>插入排序适合小型数列。</p>
</blockquote>
<p> 本文使用的流程图网站为:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">http://www.processon.com/</span><br></pre></td></tr></table></figure>
</summary>
</entry>
<entry>
<title>树的旋转与实现</title>
<link href="https://github.com/Scannery/Scannery.github.io/2016/11/20/roll/"/>
<id>https://github.com/Scannery/Scannery.github.io/2016/11/20/roll/</id>
<published>2016-11-20T08:06:40.008Z</published>
<updated>2016-11-29T05:20:33.072Z</updated>
<content type="html"><blockquote>
<p>本文主要提供作者解决问题的思路与方法,各位大神如果有别的方法,欢迎指出</p>
</blockquote>
<h1 id="树旋"><a href="#树旋" class="headerlink" title="树旋"></a>树旋</h1><h3 id="1-树旋是什么"><a href="#1-树旋是什么" class="headerlink" title="1.树旋是什么"></a>1.树旋是什么</h3><p> 树旋是对树进行旋转的操作,具体应用于高级二叉搜索树中,如AVL树与红黑树。使用旋转可以在不破坏树的顺序结构情况下,保证树的平衡。</p>
<p> 树旋的时间复杂度为O(1),是效率很高的一种方式。通常,又分为左旋(zig)和右旋(zag)</p>
<a id="more"></a>
<h3 id="2-树旋的举例"><a href="#2-树旋的举例" class="headerlink" title="2.树旋的举例"></a>2.树旋的举例</h3><p> 我们这里有一棵二叉搜索树,如下图(1)</p>
<p> 当我们插入一个新的数,9时候,树就会失衡,如图(2)</p>
<p> 我们需要对树进行一次旋转,降低它的高度</p>
<blockquote>
<p>这样做的意义是,保证,在N个元素的树中进行元素的查找时候,搜索复杂度不大于log2(N)。</p>
</blockquote>
<p> 首先,我们找到失衡点的位置,如图(3).</p>
<p> 我们发现右边偏重,且失衡点是右子树,于是我们需要对他进行左旋<br> 左旋的过程如图(4)(5)(6)</p>
<p> 如图(6),树高变为原来的树高-1</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"> 树高</span><br><span class="line"></span><br><span class="line"> 5 5 root-&gt;5 root-&gt;5 7 root-&gt;7 1 </span><br><span class="line"> / \ / \ / \ / \ / \ / \ </span><br><span class="line">3 7 3 7 3 7 3 | 7 root-&gt;5 8 5 8 2</span><br><span class="line"> / \ / \ / \ | \ / \ \ / \ \</span><br><span class="line"> 6 8 6 8 6 8 6 8 3 6 9 3 6 9 -----------3</span><br><span class="line"> \ \ \</span><br><span class="line"> 9 9 9--------------------------------------------4</span><br><span class="line"> (1) (2) (3) (4) (5) (6)</span><br></pre></td></tr></table></figure>
<p> 下边的树中,我们发现左边偏重,但失衡点是右子树,我们需要对2点左旋,5点右旋</p>
<p> (4)(5)如图,我们对2点进行左旋</p>
<p> (6)图,对5点进行一次右旋,结果如下<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"> 树高</span><br><span class="line"></span><br><span class="line"> 5 5 5 5 5 4 1</span><br><span class="line"> / \ / \ / \ \ / \ / \ </span><br><span class="line"> 2 7 2 7 2 7 2 7 4 7 2 5 2</span><br><span class="line"> / \ / \ / \ / \ / / \ \</span><br><span class="line">1 4 1 4 1 4 1 | 4 2 1 3 7------------3</span><br><span class="line"> / / | / \</span><br><span class="line"> 3 3 3 1 3------------------------------------4</span><br><span class="line"> (1) (2) (3) (4) (5) (6)</span><br></pre></td></tr></table></figure></p>
<h3 id="3-树旋的实现"><a href="#3-树旋的实现" class="headerlink" title="3.树旋的实现"></a>3.树旋的实现</h3><p> 这里不细究旋转在二叉搜索树中的各种判定与实现,有兴趣的同学可以自己学习,仅给出旋转的算法</p>
<p> 树结构参考如下:<br><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">struct</span> tree</span><br><span class="line">&#123;</span><br><span class="line"> <span class="keyword">struct</span> tree *lc;<span class="comment">//左孩子</span></span><br><span class="line"> <span class="keyword">struct</span> tree *rc;<span class="comment">//右孩子</span></span><br><span class="line"> <span class="keyword">struct</span> tree *pa;<span class="comment">//父亲</span></span><br><span class="line"> <span class="keyword">int</span> data;</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure></p>
<p> 以左旋为例,如下<br><figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">zig</span><span class="params">(<span class="keyword">struct</span> tree *point)</span></span><br><span class="line"></span>&#123;</span><br><span class="line"> <span class="keyword">struct</span> tree *pare,*q,*r;</span><br><span class="line"> <span class="keyword">int</span> flag;</span><br><span class="line"></span><br><span class="line"> pare = point-&gt;pa;</span><br><span class="line"> q = null;</span><br><span class="line"> <span class="keyword">if</span>(point == pare -&gt; lc) flag = <span class="number">1</span>;</span><br><span class="line"> <span class="keyword">else</span> flag = <span class="number">0</span>;</span><br><span class="line"> <span class="keyword">if</span>(point-&gt;rc != null) q = point -&gt; rc -&gt; lc;</span><br><span class="line"> r = point-&gt;rc;</span><br><span class="line"></span><br><span class="line"> point -&gt; rc = q;</span><br><span class="line"> q -&gt; pa = point;</span><br><span class="line"></span><br><span class="line"> r -&gt; lc = point;</span><br><span class="line"> point -&gt; pa = r;</span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span>(flag) pare -&gt; lc = r;</span><br><span class="line"> <span class="keyword">else</span> pare -&gt; rc = r;</span><br><span class="line"> r -&gt; pa = pare;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p>
<h3 id="下篇-插入排序与归并排序"><a href="#下篇-插入排序与归并排序" class="headerlink" title="下篇 插入排序与归并排序~"></a><a href="http://scannery.github.io/2016/11/28/sort/" target="_blank" rel="external">下篇</a> 插入排序与归并排序~</h3></content>
<summary type="html">
<blockquote>
<p>本文主要提供作者解决问题的思路与方法,各位大神如果有别的方法,欢迎指出</p>
</blockquote>
<h1 id="树旋"><a href="#树旋" class="headerlink" title="树旋"></a>树旋</h1><h3 id="1-树旋是什么"><a href="#1-树旋是什么" class="headerlink" title="1.树旋是什么"></a>1.树旋是什么</h3><p> 树旋是对树进行旋转的操作,具体应用于高级二叉搜索树中,如AVL树与红黑树。使用旋转可以在不破坏树的顺序结构情况下,保证树的平衡。</p>
<p> 树旋的时间复杂度为O(1),是效率很高的一种方式。通常,又分为左旋(zig)和右旋(zag)</p>
</summary>
</entry>
<entry>
<title>走迷宫算法</title>
<link href="https://github.com/Scannery/Scannery.github.io/2016/11/03/MiGong/"/>
<id>https://github.com/Scannery/Scannery.github.io/2016/11/03/MiGong/</id>
<published>2016-11-03T14:16:41.607Z</published>
<updated>2016-11-29T05:16:46.375Z</updated>
<content type="html"><blockquote>
<p>本文主要提供作者解决问题的思路与方法,各位大神如果有别的方法,欢迎指出</p>
</blockquote>
<h1 id="1-题目"><a href="#1-题目" class="headerlink" title="1.题目"></a>1.题目</h1><p> 设有一个迷宫,他是一个宽为M,长为N的数组</p>
<p> 迷宫中,可以通行的地方值为1,不能通行的地方值为0</p>
<p> 迷宫入口为A,B.出口为C,D.求小明走出迷宫的最短路径MIN,和路线图。</p>
<a id="more"></a>
<p> 输入:第一行为M,N,其下为矩阵,每行为M个值,共N行,其后为入口和出口的坐标。</p>
<p> 举例:</p>
<p> 5,5<br> 1 0 0 0 0<br> 1 1 1 1 0<br> 0 1 0 1 0<br> 0 1 1 1 1<br> 0 0 0 1 1<br> 0,0,4,4 </p>
<p> 要求输出如下:第一行为最短路径,其下为路线图</p>
<p> 举例:</p>
<p> 8<br> 2 0 0 0 0<br> 2 2 2 2 0<br> 0 1 0 2 0<br> 0 1 1 2 2<br> 0 0 0 1 2</p>
<h1 id="2-作者经历(废话为主,可以跳过)"><a href="#2-作者经历(废话为主,可以跳过)" class="headerlink" title="2.作者经历(废话为主,可以跳过)"></a>2.作者经历(废话为主,可以跳过)</h1><h2 id="1-作者与该题目"><a href="#1-作者与该题目" class="headerlink" title="1 作者与该题目"></a>1 作者与该题目</h2><p> 本道题目,我在很多次的笔试中见过,其中不乏有各种知名的公司,比如百词斩</p>
<p> 小公司的笔试题中更是不计其数,是出现频率很高的一道题</p>
<p> 然而我一点也不意外的,全做错了</p>
<p> 那个时候的我,对这道题的思考还并不全面。很多情况没有考虑进去</p>
<h2 id="2-老旧的思路与缺陷"><a href="#2-老旧的思路与缺陷" class="headerlink" title="2 老旧的思路与缺陷"></a>2 老旧的思路与缺陷</h2><p> 解决这种问题,我用屁股思考了一秒后,决定用递归来实现。模拟一个人在迷宫中行走的场景。</p>
<p> 以下是我的各种实现</p>
<blockquote>
<p>void go(int posX,int pozY,int dir)</p>
</blockquote>
<p> 这种方式,考虑了<strong>不能倒退</strong>的问题</p>
<p> dir用来记录前一步走的方向。但缺陷很快就出现了:</p>
<p> 那就是,这个人只是在走,<strong>并不记忆</strong>,很容易在迷宫里绕圈,出不来。</p>
<p> 如上例,他就会出现以下的情况:</p>
<p> 2 0 0 0 0<br> 2 2 2 2 0<br> 0 2 0 2 0<br> 0 2 2 2 1<br> 0 0 0 1 1</p>
<p> 那么,我们的思路就是,这个人要对他每次经过的地方,<strong>做一个记号</strong></p>
<h1 id="3-思路与要点"><a href="#3-思路与要点" class="headerlink" title="3 思路与要点"></a>3 思路与要点</h1><blockquote>
<p>思路:对每次经过的地点做记号,解决了倒退与绕圈的问题。</p>
<p>要点: 要及时擦除记号,防止正确的通路,前方被堵住,举例:</p>
</blockquote>
<p> 迷宫矩阵:</p>
<p> 1 0 0 0 0<br> 1 1 1 1 0<br> 0 1 0 0 0<br> 0 1 1 0 0<br> 0 0 1 1 1</p>
<p> 出现以下的死路:</p>
<p> 2 0 0 0 0<br> 2 2 3 4 0<br> 0 1 0 0 0<br> 0 1 1 0 0<br> 0 0 1 1 1</p>
<p> 当这个人走到4这个位置时候,发现无路可走,返回到前一个3处,但3前方2的标记并没有擦除,无法后退。</p>
<p> 这种问题的变体:</p>
<blockquote>
<p>青蛙从井底开始往上爬,每次上移消耗3体力,每次平移消耗1体力,每次下移不费体力,青蛙共有100体力,井是一个迷宫……(喵喵喵?),问青蛙可否爬到顶端</p>
</blockquote>
<p> 这种问题,只要改变出井条件,再加一个体力值设定就好了</p>
<h1 id="4-程序实现"><a href="#4-程序实现" class="headerlink" title="4 程序实现"></a>4 程序实现</h1><h2 id="1-程序代码"><a href="#1-程序代码" class="headerlink" title="1 程序代码"></a>1 程序代码</h2><p> <strong>注意</strong>:由于作者很懒,并没有按题目要求的输入方式来,大家自行调整</p>
<p> 默认了,m,n为5,入口为0,0,出口为4,4。矩阵同开始题目的例子矩阵</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br></pre></td><td class="code"><pre><span class="line">#include&lt;stdio.h&gt;</span><br><span class="line">int a[5][5];//初始矩阵</span><br><span class="line">int b[5][5];//保存的最小路径矩阵</span><br><span class="line">int min_step = 0;//最小步数</span><br><span class="line">void go(int posX,int posY,int step)</span><br><span class="line">&#123;</span><br><span class="line"> a[posX][posY] = 2; // 标记此处走过</span><br><span class="line"> if((posX == 4) &amp;&amp; (posY == 4)) // 判断出口条件</span><br><span class="line"> &#123;</span><br><span class="line"> if ((min_step == 0) || (min_step &gt; step))</span><br><span class="line"> &#123;</span><br><span class="line"> min_step = step;</span><br><span class="line"> for(int i = 0;i &lt; 5;i++)</span><br><span class="line"> for(int j = 0; j &lt; 5;j++)</span><br><span class="line"> &#123;</span><br><span class="line"> b[i][j] = a[i][j];</span><br><span class="line"> &#125;</span><br><span class="line"> &#125;</span><br><span class="line"> a[posX][posY] = 1;//此路尽头,释放此路</span><br><span class="line"> return;</span><br><span class="line"> &#125;</span><br><span class="line"> step++;</span><br><span class="line"> if((posX != 0) &amp;&amp; (a[posX - 1][posY] == 1)) //left</span><br><span class="line"> go(posX - 1 ,posY,step);</span><br><span class="line"> if((posX != 4) &amp;&amp; (a[posX + 1][posY] == 1)) //right,注意边界限制</span><br><span class="line"> go(posX + 1,posY,step);</span><br><span class="line"> if((posY != 0) &amp;&amp; (a[posX][posY - 1] == 1)) //up</span><br><span class="line"> go(posX,posY - 1,step);</span><br><span class="line"> if((posY != 4) &amp;&amp; (a[posX][posY + 1] == 1)) //down,注意边界限制</span><br><span class="line"> go(posX,posY + 1,step);</span><br><span class="line"> a[posX][posY] = 1; // 此路不通,重标此处</span><br><span class="line">&#125;</span><br><span class="line">int main()</span><br><span class="line">&#123;</span><br><span class="line"> int i,j;</span><br><span class="line"> int num;</span><br><span class="line"> for(i = 0;i &lt; 5;i++)</span><br><span class="line"> for(j = 0;j &lt; 5;j++)</span><br><span class="line"> &#123;</span><br><span class="line"> scanf(&quot;%d&quot;,&amp;num);</span><br><span class="line"> a[i][j] = num;</span><br><span class="line"> &#125;</span><br><span class="line"> go(0,0,0); //入口设置,在此处更改</span><br><span class="line"> printf(&quot;%d\n&quot;,min_step);</span><br><span class="line"> for(j = 0;j &lt; 5;j++)</span><br><span class="line"> &#123;</span><br><span class="line"> for(i = 0;i &lt; 5;i++)</span><br><span class="line"> &#123;</span><br><span class="line"> printf(&quot;%d &quot;,b[i][j]);</span><br><span class="line"> &#125;</span><br><span class="line"> printf(&quot;\n&quot;);</span><br><span class="line"> &#125;</span><br><span class="line"> return 0;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<h2 id="2-运行过程展示"><a href="#2-运行过程展示" class="headerlink" title="2 运行过程展示:"></a>2 运行过程展示:</h2><blockquote>
<p>排版好累啊……我选择不排……</p>
</blockquote>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br></pre></td><td class="code"><pre><span class="line">1 1 0 0 0 </span><br><span class="line">0 1 1 1 0</span><br><span class="line">0 1 0 1 0</span><br><span class="line">0 1 1 1 1</span><br><span class="line">0 0 0 1 1</span><br><span class="line"></span><br><span class="line">2 1 0 0 0 </span><br><span class="line">0 1 1 1 0 </span><br><span class="line">0 1 0 1 0 </span><br><span class="line">0 1 1 1 1 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 1 1 1 0 </span><br><span class="line">0 1 0 1 0 </span><br><span class="line">0 1 1 1 1 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 1 1 0 </span><br><span class="line">0 1 0 1 0 </span><br><span class="line">0 1 1 1 1 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 2 1 0 </span><br><span class="line">0 1 0 1 0 </span><br><span class="line">0 1 1 1 1 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 2 2 0 </span><br><span class="line">0 1 0 1 0 </span><br><span class="line">0 1 1 1 1 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 2 2 0 </span><br><span class="line">0 1 0 2 0 </span><br><span class="line">0 1 1 1 1 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 2 2 0 </span><br><span class="line">0 1 0 2 0 </span><br><span class="line">0 1 1 2 1 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 2 2 0 </span><br><span class="line">0 1 0 2 0 </span><br><span class="line">0 1 2 2 1 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 2 2 0 </span><br><span class="line">0 1 0 2 0 </span><br><span class="line">0 2 2 2 1 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 2 2 0 </span><br><span class="line">0 2 0 2 0 </span><br><span class="line">0 2 2 2 1 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 2 2 0 </span><br><span class="line">0 1 0 2 0 </span><br><span class="line">0 1 1 2 2 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 2 2 0 </span><br><span class="line">0 1 0 2 0 </span><br><span class="line">0 1 1 2 2 </span><br><span class="line">0 0 0 1 2 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 2 2 0 </span><br><span class="line">0 1 0 2 0 </span><br><span class="line">0 1 1 2 1 </span><br><span class="line">0 0 0 2 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 2 2 0 </span><br><span class="line">0 1 0 2 0 </span><br><span class="line">0 1 1 2 1 </span><br><span class="line">0 0 0 2 2 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 1 1 0 </span><br><span class="line">0 2 0 1 0 </span><br><span class="line">0 1 1 1 1 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 1 1 0 </span><br><span class="line">0 2 0 1 0 </span><br><span class="line">0 2 1 1 1 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 1 1 0 </span><br><span class="line">0 2 0 1 0 </span><br><span class="line">0 2 2 1 1 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 1 1 0 </span><br><span class="line">0 2 0 1 0 </span><br><span class="line">0 2 2 2 1 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 1 1 0 </span><br><span class="line">0 2 0 1 0 </span><br><span class="line">0 2 2 2 2 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 1 1 0 </span><br><span class="line">0 2 0 1 0 </span><br><span class="line">0 2 2 2 2 </span><br><span class="line">0 0 0 1 2 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 1 1 0 </span><br><span class="line">0 2 0 2 0 </span><br><span class="line">0 2 2 2 1 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 1 2 0 </span><br><span class="line">0 2 0 2 0 </span><br><span class="line">0 2 2 2 1 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 2 2 0 </span><br><span class="line">0 2 0 2 0 </span><br><span class="line">0 2 2 2 1 </span><br><span class="line">0 0 0 1 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 1 1 0 </span><br><span class="line">0 2 0 1 0 </span><br><span class="line">0 2 2 2 1 </span><br><span class="line">0 0 0 2 1 </span><br><span class="line"></span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 1 1 0 </span><br><span class="line">0 2 0 1 0 </span><br><span class="line">0 2 2 2 1 </span><br><span class="line">0 0 0 2 2 </span><br><span class="line"></span><br><span class="line">8</span><br><span class="line">2 2 0 0 0 </span><br><span class="line">0 2 2 2 0 </span><br><span class="line">0 1 0 2 0 </span><br><span class="line">0 1 1 2 2 </span><br><span class="line">0 0 0 1 2</span><br></pre></td></tr></table></figure>
<h1 id="5-Java大法好,C解决这种问题的不爽处,和解决办法"><a href="#5-Java大法好,C解决这种问题的不爽处,和解决办法" class="headerlink" title="5 Java大法好,C解决这种问题的不爽处,和解决办法"></a>5 Java大法好,C解决这种问题的不爽处,和解决办法</h1><h2 id="1-C处理输入不便"><a href="#1-C处理输入不便" class="headerlink" title="1 C处理输入不便"></a>1 C处理输入不便</h2><p> 相信很多同学都死于输入格式不对,这里提醒各位</p>
<p> 不要用 scanf !!!</p>
<p> 不要用 cin !!!</p>
<p> 这些函数会按空格把输入流截断(起码windows是这样),从而出现如下情况:</p>
<p> 1 1 1 1 1</p>
<p> 被截断为</p>
<p> 1</p>
<p> 这里推荐一下两种方式:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">#include&lt;stdio.h&gt;</span><br><span class="line">char str[5]; //注意,千万别用 char *str。</span><br><span class="line">gets(str);</span><br></pre></td></tr></table></figure>
<p> 这里调用标准库的gets函数</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">#include&lt;unistd.h&gt;</span><br><span class="line">char *str;</span><br><span class="line">read(STD_FILENO,str,1024);</span><br></pre></td></tr></table></figure>
<p> 这里调用unix系统库里的函数,记住,先试一试笔试环境是否提供Unix环境</p>
<blockquote>
<p>一般情况下,请用第一种方式</p>
</blockquote>
<h2 id="2-数组限制"><a href="#2-数组限制" class="headerlink" title="2 数组限制"></a>2 数组限制</h2><p> 绝大多数题目,会给出输入矩阵的大小的上限,比如M &lt; 10,N &lt; 12;</p>
<p> 但总有无良题目,不给你上限,这tm就尴尬了</p>
<p> 这时候,建议设一个很大的限制,比如100,不行继续增加数组容量。</p>
<h2 id="3-输入流解析"><a href="#3-输入流解析" class="headerlink" title="3 输入流解析"></a>3 输入流解析</h2><p> 对于输入流,大家可以比较简单的用字符串中,某一非空格位的字符值,与字符’0’相减,获得数组该位置的值。</p>
<p> 也可以调用标准库函数,大家自行搜索。</p>
<h2 id="4-Java大法好"><a href="#4-Java大法好" class="headerlink" title="4 Java大法好"></a>4 Java大法好</h2><p> 有 Java 基础的同学,碰到这种题可以用 Java 解决,可以省掉很多很多的麻烦。这里就不提供范例了。</p>
<p> 某些脚本语言也会很方便,比如js,python,go。毕竟有现成的库函数。</p>
<h3 id="下篇-树的旋转与实现"><a href="#下篇-树的旋转与实现" class="headerlink" title="下篇 树的旋转与实现"></a><a href="http://scannery.github.io/2016/11/20/roll/" target="_blank" rel="external">下篇</a> 树的旋转与实现</h3></content>
<summary type="html">
<blockquote>
<p>本文主要提供作者解决问题的思路与方法,各位大神如果有别的方法,欢迎指出</p>
</blockquote>
<h1 id="1-题目"><a href="#1-题目" class="headerlink" title="1.题目"></a>1.题目</h1><p> 设有一个迷宫,他是一个宽为M,长为N的数组</p>
<p> 迷宫中,可以通行的地方值为1,不能通行的地方值为0</p>
<p> 迷宫入口为A,B.出口为C,D.求小明走出迷宫的最短路径MIN,和路线图。</p>
</summary>
</entry>
<entry>
<title>从C到C++(5):第一个自定义class</title>
<link href="https://github.com/Scannery/Scannery.github.io/2016/06/25/cplus5/"/>
<id>https://github.com/Scannery/Scannery.github.io/2016/06/25/cplus5/</id>
<published>2016-06-25T14:34:39.114Z</published>
<updated>2016-06-26T13:47:38.639Z</updated>
<content type="html"><blockquote>
<p>本文将介绍 c++ 基本的类操作</p>
</blockquote>
<h1 id="1-类与访问权限"><a href="#1-类与访问权限" class="headerlink" title="1. 类与访问权限"></a>1. 类与访问权限</h1><p> 类,新手可以看做含有函数的结构体。</p>
<p> 在一个类中,变量和方法可以声明为 private,public,或 protected.他们的区别如下:</p>
<blockquote>
<p> 当你在类外使用一个类的对象的时候:</p>
</blockquote>
<p> 你可以通过,<strong>对象名.变量</strong>,来访问声明为 <strong>public</strong> 的变量或方法。其他两者则不可以。</p>
<p> 子类对象可以访问父类对象的 protected 和 public 变量或方法。</p>
<a id="more"></a>
<blockquote>
<p>关于父子类会在后文说明</p>
</blockquote>
<p> 一个简单例子:</p>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> Test&#123;</span><br><span class="line"><span class="keyword">public</span>: <span class="keyword">int</span> i; <span class="comment">//i是一个 public 变量</span></span><br><span class="line"> <span class="keyword">int</span> j; <span class="comment">//j也是一个 public 变量</span></span><br><span class="line"> <span class="function"><span class="keyword">void</span> <span class="title">deploy</span><span class="params">()</span></span>; <span class="comment">//deploy 是一个 public 方法</span></span><br><span class="line"><span class="keyword">private</span>:<span class="keyword">int</span> m; <span class="comment">//m 是一个private变量</span></span><br><span class="line">&#125;; <span class="comment">//别忘了这个分号</span></span><br></pre></td></tr></table></figure>
<p> 可以新学的朋友,不明白为什么把变量设为 private。这是为了实现对数据的封装。</p>
<p> 即,<strong>你的类拿去给别人使用的时候,你并不一定希望别人通过访问改变你类中的变量。而是只想让别人用到你提供给他用的东西</strong>。实现了数据的保护。</p>
<p> 某些情况下。你希望你的伙伴可以得到变量的值,但不希望他们更改。我们可以用以下方式达成这个目的</p>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> Test&#123;</span><br><span class="line"><span class="keyword">private</span>:<span class="keyword">int</span> m;</span><br><span class="line"><span class="keyword">public</span>:<span class="function"><span class="keyword">int</span> <span class="title">getm</span><span class="params">()</span></span>&#123;return m&#125;;</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure>
<p> 通过一个 getm() 的函数,在别人需要使用 m 的时候,可以通过这个函数来得到 m 的值。但他无法修改这个值。</p>
<h1 id="2-构造函数"><a href="#2-构造函数" class="headerlink" title="2. 构造函数"></a>2. 构造函数</h1><p> 大家在使用 string 类的时候,会发现,string 类在初始化的时候,并不像我们再第一节中那样,声明对象,再给对象赋值的方式来进行构造。而是采用如下的方式:</p>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="built_in">string</span> <span class="title">s</span><span class="params">(<span class="string">"liya"</span>)</span></span>;</span><br><span class="line"><span class="function"><span class="built_in">string</span> <span class="title">s</span><span class="params">(<span class="number">10</span>,<span class="string">'c'</span>)</span></span>;</span><br></pre></td></tr></table></figure>
<p> 这里,便是采用了类的构造函数。构造函数用于生成一个类(而不是声明)。大家可以理解为,为类成员变量赋值的函数。</p>
<blockquote>
<p>构造函数可以为 private 变量进行赋值。</p>
</blockquote>
<p> 一个简单的构造函数的例子</p>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> Test&#123;</span><br><span class="line"><span class="keyword">public</span>: <span class="keyword">int</span> i; </span><br><span class="line"> <span class="keyword">int</span> j; </span><br><span class="line"> <span class="function"><span class="keyword">void</span> <span class="title">deploy</span><span class="params">()</span></span>; </span><br><span class="line"> Test(<span class="keyword">int</span> i1,<span class="keyword">int</span> j1):i(i1),j(j1)&#123;&#125; <span class="comment">//构造函数</span></span><br><span class="line"><span class="keyword">private</span>:<span class="keyword">int</span> m; </span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure>
<p> 简单解释一下这个构造函造函数:</p>
<p> 首先,<strong>构造函数的名称必须与类名相同</strong>,而且,构造函数没有任何返回值。</p>
<p> 上述写法,为构造函数名(形参1,形参2):类变量(形参1),类变量(形参2){}</p>
<blockquote>
<p>意义为,将形参1赋予类变量1,将形参2赋予变量2</p>
</blockquote>
<p> 上述的构造函数等价于这种形式:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">Test::Test(int i1,int j1)</span><br><span class="line">&#123;</span><br><span class="line"> i = i1;</span><br><span class="line"> j = j1;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<p> 在上述函数中,我们使用前缀 Test:: 来表示他是 Test 类中的函数。这样写可以在类外定义类中的方法。</p>
<blockquote>
<p><strong>前提是他在类中声明过</strong></p>
</blockquote>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> Test&#123;</span><br><span class="line"><span class="keyword">public</span>: <span class="keyword">int</span> i; </span><br><span class="line"> <span class="keyword">int</span> j; </span><br><span class="line"> <span class="function"><span class="keyword">void</span> <span class="title">deploy</span><span class="params">()</span></span>; </span><br><span class="line"> Test(<span class="keyword">int</span>,<span class="keyword">int</span>); <span class="comment">//声明函数</span></span><br><span class="line"><span class="keyword">private</span>:<span class="keyword">int</span> m; </span><br><span class="line">&#125;;</span><br><span class="line">Test::Test(<span class="keyword">int</span> i1,<span class="keyword">int</span> j1) <span class="comment">//类外实现</span></span><br><span class="line">&#123;</span><br><span class="line"> i = i1;</span><br><span class="line"> j = j1;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<p> 需要定义该类的对象时候,我们用如下的方式进行构造</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">int i,j;</span><br><span class="line">Test a(i,j);</span><br></pre></td></tr></table></figure>
<p> 上述方式定义了一个名为 a 的 Test 类对象。对象的 i,j 值被赋予。</p>
<h1 id="3-函数的重载"><a href="#3-函数的重载" class="headerlink" title="3. 函数的重载"></a>3. 函数的重载</h1><p> 在 C++ 中,可以存在有函数名相同,但形参不同的函数,这样我们可以使用一个函数名,对多类数据类型进行处理。</p>
<p> 如下:<br><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">max</span><span class="params">(<span class="keyword">int</span> i,<span class="keyword">int</span> j)</span></span><br><span class="line"></span>&#123;</span><br><span class="line"> <span class="keyword">if</span>(i&gt;j) return i;</span><br><span class="line"> <span class="keyword">else</span> return j;</span><br><span class="line">&#125;</span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">max</span><span class="params">(<span class="keyword">int</span> i,<span class="keyword">int</span> j,<span class="keyword">int</span> k)</span></span><br><span class="line"></span>&#123;</span><br><span class="line"><span class="comment">//...具体内容省略</span></span><br><span class="line">&#125;</span><br><span class="line"><span class="function"><span class="keyword">int</span> <span class="title">max</span><span class="params">(<span class="keyword">int</span> i,<span class="keyword">int</span> j,<span class="keyword">int</span> k,<span class="keyword">int</span> l)</span></span><br><span class="line"></span>&#123;</span><br><span class="line"><span class="comment">//...</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p>
<p> 如上所示,我们定义了三个名为 max 的函数。当我们需要调用的时候,系统会根据所给参数的多少,来确定具体调用哪个函数。</p>
<p> 同理</p>
<blockquote>
<p>构造函数也是可以进行重载的</p>
</blockquote>
<p> 如下:<br><figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> Test&#123;</span><br><span class="line"><span class="keyword">public</span>: <span class="keyword">int</span> i; </span><br><span class="line"> <span class="keyword">int</span> j; </span><br><span class="line"> Test(<span class="keyword">int</span> i,<span class="keyword">int</span> j):i(i),j(j)&#123;&#125; <span class="comment">//构造函数一</span></span><br><span class="line"> Test(<span class="keyword">int</span> i,<span class="keyword">int</span> j,<span class="keyword">int</span> m):i(i),j(j),m(m)&#123;&#125; <span class="comment">//构造函数二</span></span><br><span class="line"> Test()&#123;&#125; <span class="comment">//构造函数三</span></span><br><span class="line"><span class="keyword">private</span>:<span class="keyword">int</span> m; </span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure></p>
<h1 id="4-类的共享"><a href="#4-类的共享" class="headerlink" title="4. 类的共享"></a>4. 类的共享</h1><p> 很多 cpp 新人可能会不解,在一个 project 里,如何做到类在不同 .cpp 文件中的共享。作为一个从 .java 转过来的人,我就有过这样的疑问。</p>
<blockquote>
<p>java 中,可以直接进行引用,而 C++ 中,需要采用如下方式:</p>
</blockquote>
<p> 首先:</p>
<p> <strong>将你要分享的类,写到一个 .h 文件里</strong></p>
<p> 其次:</p>
<p> <strong>在你需要引用该类的文件里,引用这个文件作为头文件</strong></p>
<p> 这也是为什么类的函数在类外实现的原因之一。为了不让 .h 文件看起来过于繁杂。将 .h 文件中类的方法写在文件外,使之变得更有可读性。</p>
<h1 id="5-类的命名"><a href="#5-类的命名" class="headerlink" title="5. 类的命名"></a>5. 类的命名</h1><p> 一些约定俗称的规则,可以让你的程序更具可读性。</p>
<p> 类的定义,类名,首字母要大写。 比如 class Test;</p>
<p> 方法名和变量名,采用第一个单词小写,其余单词大写的方式, 比如 int getIndexOf();</p>
<h3 id="下篇-从C到C-6-:析构函数和友元函数"><a href="#下篇-从C到C-6-:析构函数和友元函数" class="headerlink" title="下篇 从C到C++(6):析构函数和友元函数"></a><a href="#">下篇</a> 从C到C++(6):析构函数和友元函数</h3></content>
<summary type="html">
<blockquote>
<p>本文将介绍 c++ 基本的类操作</p>
</blockquote>
<h1 id="1-类与访问权限"><a href="#1-类与访问权限" class="headerlink" title="1. 类与访问权限"></a>1. 类与访问权限</h1><p> 类,新手可以看做含有函数的结构体。</p>
<p> 在一个类中,变量和方法可以声明为 private,public,或 protected.他们的区别如下:</p>
<blockquote>
<p> 当你在类外使用一个类的对象的时候:</p>
</blockquote>
<p> 你可以通过,<strong>对象名.变量</strong>,来访问声明为 <strong>public</strong> 的变量或方法。其他两者则不可以。</p>
<p> 子类对象可以访问父类对象的 protected 和 public 变量或方法。</p>
</summary>
</entry>
<entry>
<title>从C到C++(4):迭代器Iterator</title>
<link href="https://github.com/Scannery/Scannery.github.io/2016/06/12/cplus4/"/>
<id>https://github.com/Scannery/Scannery.github.io/2016/06/12/cplus4/</id>
<published>2016-06-12T05:35:51.784Z</published>
<updated>2016-06-25T16:17:23.346Z</updated>
<content type="html"><blockquote>
<p>本文将介绍关于C++中迭代器的介绍</p>
</blockquote>
<h1 id="1-一个简单的迭代器"><a href="#1-一个简单的迭代器" class="headerlink" title="1.一个简单的迭代器"></a>1.一个简单的迭代器</h1><p> 迭代器新手可以理解为,集合中元素的指针。如下,我们用 begin() 函数返回字符串首的指针</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">string s=&quot;dqcqczceqf&quot;;</span><br><span class="line">string::iterator a=s.begin();</span><br></pre></td></tr></table></figure>
<p> 这样就定义了简单的迭代器,同理,我们也可以用 end() 函数来返回字符串尾的指针,也就是字符串尾的迭代器</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">string::iterator a=s.end();</span><br></pre></td></tr></table></figure>
<p> 这样写的坏处是,前边那个名字太长了,绝大多数时候我们可以用以下方式来简化他</p>
<a id="more"></a>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">auto a=s.begin();</span><br><span class="line">auto a=s.end();</span><br></pre></td></tr></table></figure>
<blockquote>
<p><strong>但不是所有情况,注意一下</strong></p>
</blockquote>
<p> 同理,大家也可以在 vector 之类的容器上,使用迭代器</p>
<h1 id="2-迭代器的操作"><a href="#2-迭代器的操作" class="headerlink" title="2.迭代器的操作"></a>2.迭代器的操作</h1><p> 迭代器可以进行运算符的操作,如</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">vector&lt;string&gt; a=&#123;&quot;dqcqa&quot;,&quot;cquwhqcq&quot;,&quot;hcqiiqe&quot;&#125;;</span><br><span class="line">auto c=a.begin(); // c 指向 a 的第一个元素</span><br><span class="line">c=c+5; // c 指向 a 的第六个元素 </span><br><span class="line">c=c-1; // c 指向 a 的第五个元素</span><br></pre></td></tr></table></figure>
<p> 迭代器之间可以进行减法运算</p>
<blockquote>
<p>必须是指向<strong>同一个容器</strong>的迭代器,才可以进行运算</p>
</blockquote>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">auto b=a.end();</span><br><span class="line">auto c=b-a;</span><br></pre></td></tr></table></figure>
<blockquote>
<p>注意,有些编译器不认这些写法,最新版的 C++ 支持的</p>
</blockquote>
<h1 id="3-指向类的迭代器"><a href="#3-指向类的迭代器" class="headerlink" title="3.指向类的迭代器"></a>3.指向类的迭代器</h1><p> 迭代器可以以指针的方式访问到类内的成员,如下:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">class liya&#123;</span><br><span class="line">public :int a;</span><br><span class="line"> liya(int i):a(i)&#123;&#125;;</span><br><span class="line">&#125;;</span><br><span class="line">int main()</span><br><span class="line">&#123;</span><br><span class="line">vector&lt;liya&gt; c;</span><br><span class="line">liya m(3);</span><br><span class="line">c.push_back(m);</span><br><span class="line">vector&lt;liya&gt;::iterator iter=c.begin();</span><br><span class="line">int i=iter-&gt;a;</span><br><span class="line">return 0;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<h1 id="4-引用"><a href="#4-引用" class="headerlink" title="4.引用"></a>4.引用</h1><p> C++ 中,定义了一种名为引用的类型,(由于上课时并未讲到,这里我就当做 C++ 中的特性了)</p>
<p> 我们用以下方式来定义引用</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">int a=24;</span><br><span class="line">int &amp;refer=a;</span><br></pre></td></tr></table></figure>
<p> 这里定义了名为 refer 的引用,refer 指向 int 值 a</p>
<blockquote>
<p>与指针不同的是,refer 指向的单位不用 * 来访问,直接用引用名就可以了</p>
</blockquote>
<p> 例如,我们这样来应用:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">int i=refer;</span><br></pre></td></tr></table></figure>
<p> 这里的 i 会具有和上边定义的 a 相同的值</p>
<blockquote>
<p>也就是,你可以理解为,引用是变量的另一个名字</p>
</blockquote>
<p> 注意,引用必须是对象,而且必须与源对象相同,以下定义方法是错误的:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">int &amp;m=100; //不行,100必须先有个名字,才能上引用</span><br><span class="line">float c=3.14;</span><br><span class="line">int &amp;d=c; //不行,必须与原对象格式相同</span><br></pre></td></tr></table></figure>
<p> 对象的简单应用,作为函数的传递值</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">void swap(int &amp;a,int &amp;b)</span><br><span class="line">&#123;</span><br><span class="line">int c;</span><br><span class="line">c=a;</span><br><span class="line">a=b;</span><br><span class="line">b=c;</span><br><span class="line">&#125;</span><br><span class="line">int main()</span><br><span class="line">&#123;</span><br><span class="line">int a=3;</span><br><span class="line">int b=4;</span><br><span class="line">swap(a,b);</span><br><span class="line">return 0;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<p> 二者交换之后,结果为 a=4,b=3。在传输参数时,我们将函数的形参定义为引用,也就是a,b 在函数 swap 里的另一个名字</p>
<h1 id="5-迭代举例,快速排序算法"><a href="#5-迭代举例,快速排序算法" class="headerlink" title="5.迭代举例,快速排序算法"></a>5.迭代举例,快速排序算法</h1><p> 我们举一个快速排序的例子,来看看这种经典排序方法的执行步骤。</p>
<h3 id="1-快速排序的原理,"><a href="#1-快速排序的原理," class="headerlink" title="1.快速排序的原理,"></a>1.快速排序的原理,</h3><p> 快速排序的本质是将数组一份为二。</p>
<p> 首先,我们再数组中取一个 key 值,我们进行排序交换,将小于 key 的值放到 key 的左边,将大于 key 的值放在 key 的右边。</p>
<p> 之后,我们将 key 左边,右边的数组进行同样方式的排序。再次分割,然后将分割后的四部分进行再次的快速排序……</p>
<p> 直到,划分的每个数组元素量为1,或者,划分后的数组排序并没有经历过一个数据移动,即为数组子集的完成</p>
<blockquote>
<p>值得一提的是,快速排序的时间复杂度为 n(log2(n)) ;相比于冒泡排序的 n平方 要快不少。</p>
</blockquote>
<h3 id="2-简单的快速排序说明"><a href="#2-简单的快速排序说明" class="headerlink" title="2.简单的快速排序说明"></a>2.简单的快速排序说明</h3><p> 我们定义一下数组:</p>
<blockquote>
<p>3,5,6,2,7</p>
</blockquote>
<p> 取 key 为1,定义 i=0 ,j = 4(即数组的首和尾)</p>
<p> 从尾开始排序,7&gt;3,合理,2&lt;3,交换2和3,数组变为</p>
<blockquote>
<p>2,5,6,3,7</p>
</blockquote>
<p> 这时候,j 的值保存为 3,i 变量进行自增,2<3,但5>3 ,交换二者</3,但5></p>
<blockquote>
<p>2,3,6,5,7</p>
</blockquote>
<p> 这时候,i 的值保存,j再开始减,直到 i 的值和 j 的值相等时,我们发现</p>
<p> 数组已经划分为 key 值3的左右两部分,左边小于三,右边大于三</p>
<p> 我们将集合分为两部分,2,和6,5,7</p>
<blockquote>
<p>2 6,5,7</p>
</blockquote>
<p> 2为单字,排序完成,进行6,5,7排序,</p>
<blockquote>
<p>同上,取第一个数字 6 为 key 值。 i 设为起始值2,j设为子数组最大元素4.同理进行排序</p>
</blockquote>
<h3 id="3-用-c-实现快速排序"><a href="#3-用-c-实现快速排序" class="headerlink" title="3.用 c++ 实现快速排序"></a>3.用 c++ 实现快速排序</h3><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line">void quiksort(int a[],int i,int j)</span><br><span class="line">&#123;</span><br><span class="line"> if (i&lt;j)</span><br><span class="line"> &#123;</span><br><span class="line"> int qidian = i;</span><br><span class="line"> int zhongdian = j;</span><br><span class="line"> int key = a[i];</span><br><span class="line"> int c;</span><br><span class="line"> for (; j&gt;i; j--)</span><br><span class="line"> &#123;</span><br><span class="line"> if (a[j] &lt; key)</span><br><span class="line"> &#123;</span><br><span class="line"> c = a[i];</span><br><span class="line"> a[i] = a[j];</span><br><span class="line"> a[j] = c;</span><br><span class="line"> i++;</span><br><span class="line"> for (; i&lt;j; i++)</span><br><span class="line"> &#123;</span><br><span class="line"> if (a[i] &gt; key)</span><br><span class="line"> &#123;</span><br><span class="line"> c = a[i];</span><br><span class="line"> a[i] = a[j];</span><br><span class="line"> a[j] = c;</span><br><span class="line"> break;</span><br><span class="line"> &#125;</span><br><span class="line"> &#125;</span><br><span class="line"> &#125;</span><br><span class="line"> &#125;</span><br><span class="line"> for (int c = 0; c &lt; (sizeof(a) / sizeof(int)); c++) cout &lt;&lt; *(a + c) &lt;&lt; &quot; &quot;;</span><br><span class="line"> cout &lt;&lt; endl;</span><br><span class="line"> cout &lt;&lt; qidian &lt;&lt; &quot; &quot; &lt;&lt; i - 1 &lt;&lt; &quot; &quot; &lt;&lt; j+1 &lt;&lt; &quot; &quot; &lt;&lt;zhongdian &lt;&lt; endl;</span><br><span class="line"> quiksort(a,qidian, i-1);</span><br><span class="line"> quiksort(a, i+1, zhongdian);</span><br><span class="line"> &#125;</span><br><span class="line"> else return;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<h3 id="4-C-中的快速排序算法"><a href="#4-C-中的快速排序算法" class="headerlink" title="4.C++ 中的快速排序算法"></a>4.C++ 中的快速排序算法</h3><p> 可能大家看过上边的函数之后,发现和迭代器半毛钱关系都没有,这里我们提一个有关系的东西</p>
<blockquote>
<p>在头文件 algorithm 中,定义了如下排序算法</p>
</blockquote>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sort(迭代器开头,迭代器结尾,排序方式);</span><br></pre></td></tr></table></figure>
<p> 迭代器头尾很好理解,排序方式可以省略,默认为升序。</p>
<p> 我们可以用以下方式让他变为降序</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sort(begin,end,[](int a,int b)&#123;return a&gt;b;&#125;);</span><br></pre></td></tr></table></figure>
<p> 这种写法,将第三个变量写为一个 lamda 函数,想了解更多可以问度,或者参考其他参考书。</p>
<h2 id="下篇-从C到C-5-:第一个自定义class"><a href="#下篇-从C到C-5-:第一个自定义class" class="headerlink" title="下篇 从C到C++(5):第一个自定义class"></a><a href="#">下篇</a> 从C到C++(5):第一个自定义class</h2></content>
<summary type="html">
<blockquote>
<p>本文将介绍关于C++中迭代器的介绍</p>
</blockquote>
<h1 id="1-一个简单的迭代器"><a href="#1-一个简单的迭代器" class="headerlink" title="1.一个简单的迭代器"></a>1.一个简单的迭代器</h1><p> 迭代器新手可以理解为,集合中元素的指针。如下,我们用 begin() 函数返回字符串首的指针</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">string s=&quot;dqcqczceqf&quot;;</span><br><span class="line">string::iterator a=s.begin();</span><br></pre></td></tr></table></figure>
<p> 这样就定义了简单的迭代器,同理,我们也可以用 end() 函数来返回字符串尾的指针,也就是字符串尾的迭代器</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">string::iterator a=s.end();</span><br></pre></td></tr></table></figure>
<p> 这样写的坏处是,前边那个名字太长了,绝大多数时候我们可以用以下方式来简化他</p>
</summary>
</entry>
<entry>
<title>Scannery 的软件推荐:windows篇</title>
<link href="https://github.com/Scannery/Scannery.github.io/2016/05/27/softintro/"/>
<id>https://github.com/Scannery/Scannery.github.io/2016/05/27/softintro/</id>
<published>2016-05-27T14:48:44.598Z</published>
<updated>2016-05-31T11:13:54.601Z</updated>
<content type="html"><blockquote>
<p>本文将推荐一些个人用的习惯的软件</p>
<p>博客大致会做到周更,闲时可能会多更</p>
</blockquote>
<h1 id="Windows-软件"><a href="#Windows-软件" class="headerlink" title="Windows 软件"></a>Windows 软件</h1><h2 id="bililocal-视频播放器"><a href="#bililocal-视频播放器" class="headerlink" title="bililocal 视频播放器"></a>bililocal 视频播放器</h2><p> bililocal 视频播放器是一个 <strong>本地 </strong>的弹幕播放器,他可以让你在看本地视频的同时同样可以享受到网络上的弹幕</p>
<blockquote>
<p>下载地址或想了解更多: <a href="http://tieba.baidu.com/p/2319140116" target="_blank" rel="external">软件更新帖</a></p>
<p>源码地址: <a href="https://github.com/AncientLysine/BiliLocal/tree/master/src">github源码</a></p>
<p>本作还有linux版</p>
</blockquote>
<p> 界面如下:</p>
<a id="more"></a>
<p> <img src="http://i4.buimg.com/221d2eda2fcf398b.png" alt=""></p>
<blockquote>
<p>bililocal 同时支持 Acfun 的弹幕</p>
</blockquote>
<p> 值得一提的是,博主的版本加载字幕时候会特别卡,可能最新版已经修复了这个问题</p>
<p> 另外安利腾讯的QQ播放器,算是一个功能较为齐全,且适合国人使用习惯的播放器了,腾讯难得的良心软件</p>
<h2 id="chrome-谷歌浏览器"><a href="#chrome-谷歌浏览器" class="headerlink" title="chrome 谷歌浏览器"></a>chrome 谷歌浏览器</h2><p> 谷歌是一个值得尊敬的公司,作为一个国际级的公司,他的关注点在 <strong>前景</strong> ,而非国内大部分公司所关心的 <strong>钱景</strong> 上</p>
<blockquote>
<p>我们熟悉的手机操作的系统 Android ,便由谷歌公司参与开发</p>
</blockquote>
<p> 谷歌浏览器是一款非常好用的浏览器,并且有功能丰富且使用的小插件,比如:</p>
<ul>
<li><p>广告屏蔽插件 : Adguard</p>
</li>
<li><p>翻译插件 : Google Translate</p>
</li>
<li><p>键盘操作插件,用键盘浏览网页 : Vimium</p>
</li>
<li><p>更多知乎大大推荐的好用插件,戳<a href="https://www.zhihu.com/question/19594682" target="_blank" rel="external">这里</a></p>
<p>谷歌浏览器的界面,清爽+简洁:</p>
<p><img src="http://i4.buimg.com/5d5ca4ee787ab122.png" alt=""></p>
<p>附链,<a href="https://chrome.google.com/webstore/category/extensions?hl=zh-CN" target="_blank" rel="external">谷歌插件店</a></p>
</li>
</ul>
<h2 id="Lantern"><a href="#Lantern" class="headerlink" title="Lantern"></a>Lantern</h2><p> 蓝灯是一款非常简单的翻墙软件,基本安装上之后,让他开机启动,就可以直接去墙外了。比较省事的一款软件</p>
<blockquote>
<p>值得一提的是,使用代理也可以加快访问非被墙网站的速度,比如git,twitch之类</p>
</blockquote>
<p> 贴一张墙外的世界:</p>
<p> <img src="http://i4.buimg.com/6b13ef0bc0d581a8.png" alt=""></p>
<p> 附一些常用的墙外链:</p>
<ul>
<li><p><a href="https://www.facebook.com/" target="_blank" rel="external">facebook</a></p>
</li>
<li><p><a href="https://twitter.com/" target="_blank" rel="external">twitter</a></p>
</li>
<li><p><a href="https://www.tumblr.com/" target="_blank" rel="external">最近被墙某网址</a></p>
</li>
</ul>
<h2 id="steam-钱包掏空者"><a href="#steam-钱包掏空者" class="headerlink" title="steam , 钱包掏空者"></a>steam , 钱包掏空者</h2><p> G胖的邪恶嘴脸;</p>
<p> 啥也不说了,我先去剁手……</p>
<blockquote>
<p>steam 是最大的PC游戏发售平台之一,这里可以接触到很多优秀的独立游戏和游戏大作。也是一个很好的交友平台,恩,男人的淘宝</p>
</blockquote>
<p> 对方不想和你说话,并向你扔了一个垃圾平台;</p>
<p> 你接住了垃圾平台,并被抢光了钱;</p>
<h3 id="下篇-Scannery-的软件推荐:Andriod篇"><a href="#下篇-Scannery-的软件推荐:Andriod篇" class="headerlink" title="下篇 Scannery 的软件推荐:Andriod篇"></a><a href="#">下篇</a> Scannery 的软件推荐:Andriod篇</h3></content>
<summary type="html">
<blockquote>
<p>本文将推荐一些个人用的习惯的软件</p>
<p>博客大致会做到周更,闲时可能会多更</p>
</blockquote>
<h1 id="Windows-软件"><a href="#Windows-软件" class="headerlink" title="Windows 软件"></a>Windows 软件</h1><h2 id="bililocal-视频播放器"><a href="#bililocal-视频播放器" class="headerlink" title="bililocal 视频播放器"></a>bililocal 视频播放器</h2><p> bililocal 视频播放器是一个 <strong>本地 </strong>的弹幕播放器,他可以让你在看本地视频的同时同样可以享受到网络上的弹幕</p>
<blockquote>
<p>下载地址或想了解更多: <a href="http://tieba.baidu.com/p/2319140116">软件更新帖</a></p>
<p>源码地址: <a href="https://github.com/AncientLysine/BiliLocal/tree/master/src">github源码</a></p>
<p>本作还有linux版</p>
</blockquote>
<p> 界面如下:</p>
</summary>
</entry>
<entry>
<title>从C到C++(2):你好,世界</title>
<link href="https://github.com/Scannery/Scannery.github.io/2016/05/18/cplus2/"/>
<id>https://github.com/Scannery/Scannery.github.io/2016/05/18/cplus2/</id>
<published>2016-05-18T13:32:45.609Z</published>
<updated>2016-05-31T11:20:26.945Z</updated>
<content type="html"><blockquote>
<p>本文将介绍C++的控制台输入输出,与string类的部分操作</p>
</blockquote>
<h1 id="1-你好,世界"><a href="#1-你好,世界" class="headerlink" title="1.你好,世界"></a>1.你好,世界</h1><p> 我们可以在任意文本编译器或IDE中,输入以下程序:</p>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string">&lt;iostream&gt;</span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="built_in">std</span>;</span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">main</span><span class="params">()</span></span><br><span class="line"></span>&#123;</span><br><span class="line"> <span class="built_in">cout</span>&lt;&lt;<span class="string">"hello world"</span>&lt;&lt;<span class="built_in">endl</span>;</span><br><span class="line"> system(<span class="string">"pause"</span>); <span class="comment">//用vs的同学请加上这句</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<p> 经过编译,就可以在 cmd 上看到我们的成果了<br><a id="more"></a></p>
<h1 id="2-C-中的标准输入和输出"><a href="#2-C-中的标准输入和输出" class="headerlink" title="2.C++中的标准输入和输出"></a>2.C++中的标准输入和输出</h1><blockquote>
<p>cin 与 cout 函数存在于头文件 <strong>iostream</strong> 中</p>
</blockquote>
<p> 这里说的输入输出只包括控制台的输出</p>
<blockquote>
<p>std::cin&gt;&gt;s&gt;&gt;s1&gt;&gt;s2&gt;&gt;sn;</p>
</blockquote>
<p> 上式为标准输入,将控制台输入的值置入s中,s可以为整型,长整,浮点,字符串……</p>
<p> 在标注了 using namespace std; 的情况下,上式可以简化为:</p>
<blockquote>
<p>cin&gt;&gt;s1&gt;&gt;s2&gt;&gt;sn;</p>
</blockquote>
<p> 注意:<strong>使用连续的输入时,可以用空格来分割两个输入,也可以一个一个输入,即输入一个数据接空格</strong></p>
<p> 比如,我用cin&gt;&gt;s1&gt;&gt;s2&gt;&gt;s3时,我可以这么输入:</p>
<p> s1\回车<br> s2 s3\回车</p>
<p> c++的标准输出如下:</p>
<blockquote>
<p>std::cout&lt;&lt;输出1&lt;&lt;输出2&lt;&lt;输出n&lt;&lt;std::endl;</p>
</blockquote>
<p> c++标准输出由cout与endl两部分组成,输出为任意变量或用双引号引起的字符串</p>
<p> 同理,在 using 掉 std 的情况下,上式简化为:</p>
<blockquote>
<p>cout&lt;&lt;输出1&lt;&lt;输出n&lt;&lt;endl;</p>
</blockquote>
<p> 其中, endl 是end line 的意思,表明输出之后将自动换行</p>
<p> 值得注意的是:</p>
<blockquote>
<p><strong>不能用 cin 或 cout 直接输出非特殊类的对象</strong></p>
</blockquote>
<p> ps:大家可以通过问度来获取这些函数更多的用法,问谷歌可以得到更多,上谷歌需要翻墙才可以进行访问,有需求的朋友可以参考<a href="http://scannery.github.io/2016/05/13/blogmake/" target="_blank" rel="external">我的另一篇博客</a></p>
<h1 id="3-字符串类string与c-style-string"><a href="#3-字符串类string与c-style-string" class="headerlink" title="3.字符串类string与c_style string"></a>3.字符串类string与c_style string</h1><blockquote>
<p>string类的头文件为 <strong>string</strong></p>
</blockquote>
<p> 相信大家都了解c_style的字符串的表达方式,在C中,我们用 <strong>字符串</strong> 加上 <strong>\0</strong> 的方式来存储一个字符串</p>
<p> 比如说,如果我输入的字符串是 <strong>c++isverygood</strong>,c会以一下方式来存储</p>
<blockquote>
<p>c++isverygood\0</p>
</blockquote>
<p> 如果这个字符串s来表示,s存储的将是这个字符串第一位的位置,也就c的存储位置,系统在读取字符串时,会沿c往后读,直到遇到\0</p>
<p> 这种方式是不是很眼熟呢?没错:</p>
<blockquote>
<p>在C中,字符串的存储方式的本质是一个 <strong>字符数组</strong></p>
</blockquote>
<p> 在C++中,我们同样可以用这种方式来定义一个字符串。但在本文中,我们将介绍另外一种更好用的定义方法:</p>
<p> 如下,用string类来定义并使用一个字符串</p>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string">&lt;string&gt;</span></span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string">&lt;iostream&gt;</span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="built_in">std</span>;</span><br><span class="line"><span class="keyword">void</span> main</span><br><span class="line">&#123;</span><br><span class="line"> <span class="built_in">string</span> s;</span><br><span class="line"> <span class="built_in">cin</span>&gt;&gt;s;</span><br><span class="line"> <span class="built_in">cout</span>&lt;&lt;s&lt;&lt;<span class="built_in">endl</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<p> 注意,string类可以直接调用cin来输入;</p>
<h1 id="4-string类的初始化"><a href="#4-string类的初始化" class="headerlink" title="4.string类的初始化"></a>4.string类的初始化</h1><p> 在上面的程序中,我们用 string s 来声明一个字符串,但在声明的同时,给其赋予了初值空;</p>
<blockquote>
<p>同样的,我们再定义其他数据类型时,系统也会赋予其一个初始值。如 int 型将被赋予0, boolean 型将被赋予 false</p>
</blockquote>
<p> 我们可以使用以下方式声明并初始化一个字符串:</p>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">string</span> s=<span class="string">"abc"</span>; <span class="comment">//将abc复制入s</span></span><br><span class="line"><span class="built_in">string</span> s(<span class="string">"abc"</span>); <span class="comment">//将s定义为abc</span></span><br><span class="line"><span class="function"><span class="built_in">string</span> <span class="title">s</span><span class="params">(<span class="string">'c'</span>,<span class="number">10</span>)</span></span>; <span class="comment">//s为cccccccccc</span></span><br><span class="line"><span class="built_in">string</span> s; <span class="comment">//s是一个空的字符串</span></span><br><span class="line"><span class="function"><span class="built_in">string</span> <span class="title">s</span><span class="params">(s1)</span></span>; <span class="comment">//将s1的值赋予s</span></span><br></pre></td></tr></table></figure>
<p> 关于 string 类型还有很多的定义方法,但需要用 c++ 的朋友来说,这些足够了,需要拿 c++ 去应试的朋友,还是老老实实学更多吧</p>
<h1 id="5-string-类的常用方法"><a href="#5-string-类的常用方法" class="headerlink" title="5.string 类的常用方法"></a>5.string 类的常用方法</h1><blockquote>
<p>s.empty()</p>
</blockquote>
<p> 返回一个布尔值,如果字符串s为空,返回 true ,否则返回 false </p>
<blockquote>
<p>布尔值用 <strong>boolean 变量</strong> 定义,取值有 true 和 false ,在C语言中,我们用0表示 false ,用非0表示 true </p>
</blockquote>
<p> 关于更多布尔值的资料,请戳<a href="#">这里</a></p>
<blockquote>
<p>s.size()</p>
</blockquote>
<p> 返回字符串的长度,注意,字符串的顺序是0到长度-1;</p>
<blockquote>
<p>s[n]</p>
</blockquote>
<p> 返回字符串 s 在 n 位置的 <strong>char</strong> 的引用,大家可以将其理解为值,更多的引用得说明,请参照<a href="http://scannery.github.io/2016/05/30/cplus3/" target="_blank" rel="external">下篇</a></p>
<p> 初学的朋友可以无视引用二字,理解为在n位置上的值就可以了</p>
<p> <strong>注意, s[s.size()] 越界了,最后一个字符是 s[s.size()-1]!!!</strong></p>
<blockquote>
<p>s1+s2</p>
</blockquote>
<p> 将 s1 与 s2 相连,如 s1 为 abc ,s2 为 bcd ,那么 s1+s2 的值为 abcbcd</p>
<blockquote>
<p>s1=s2</p>
</blockquote>
<p> 将 s2 的值赋予 s1;</p>
<blockquote>
<p>s.erase(起点,终点)<br>s.erase(位置)</p>
</blockquote>
<p> 第一种方式,擦除字符串内起点到终点位置的字符,起点终点可以为 int 型或迭代器 string::iterator 型</p>
<p> 第二种方式,擦除字符串中指定位置的字符,起点终点可以为 int 型或迭代器 string::iterator 型</p>
<blockquote>
<p>s.push_back(字符)</p>
</blockquote>
<p> 在字符串尾部加入一个字符</p>
<p> 你也可以写成 <strong>s+字符</strong> 来达成这个效果</p>
<blockquote>
<p>s.c_str()<br>s.data()</p>
</blockquote>
<p> 返回一个C风格的字符串,或者说成字符数组,用 c_str 将会有 \0 的结束符,data 则没有 \0 的结束符</p>
<h1 id="6-两个简单的应用-string-类程序"><a href="#6-两个简单的应用-string-类程序" class="headerlink" title="6.两个简单的应用 string 类程序"></a>6.两个简单的应用 string 类程序</h1><p> 遍历string中的数据:<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">for(char a: str) cout&lt;&lt;a&lt;&lt;endl;</span><br></pre></td></tr></table></figure></p>
<p> 在C++中,我们可以用for(数据类型,不知道直接怼为auto : 数组名,vector 名,string 名)来遍历其中的数据</p>
<p>##6.1,split方法</p>
<p> string split的方法,将字符串用指定标示符来分割:</p>
<p> 如果字符串为 abcdeca ,用指定符 c 来分割,结果为 ab de a 三个字符串</p>
<p> &lt; 本函数将结果存储在 Vector 中,Vector 的使用将在下篇提及:</p>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string">&lt;string&gt;</span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="built_in">std</span>;</span><br><span class="line"></span><br><span class="line"><span class="built_in">vector</span>&lt;<span class="built_in">string</span>&gt; str_split(<span class="built_in">string</span> str, <span class="keyword">char</span> sign)</span><br><span class="line">&#123;</span><br><span class="line"> <span class="built_in">vector</span>&lt;<span class="built_in">string</span>&gt; strs;</span><br><span class="line"> <span class="function"><span class="built_in">string</span> <span class="title">split</span><span class="params">(<span class="string">""</span>)</span></span>;</span><br><span class="line"> <span class="keyword">for</span> (<span class="keyword">char</span> c : str)</span><br><span class="line"> &#123;</span><br><span class="line"> <span class="keyword">if</span> (c == sign)</span><br><span class="line"> &#123;</span><br><span class="line"> strs.push_back(split);</span><br><span class="line"> split = <span class="string">""</span>;</span><br><span class="line"> &#125;</span><br><span class="line"> <span class="keyword">else</span> split = split + c;</span><br><span class="line"> &#125;</span><br><span class="line"> strs.push_back(split);</span><br><span class="line"> return strs;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<h2 id="6-2-trim-方法"><a href="#6-2-trim-方法" class="headerlink" title="6.2 trim 方法"></a>6.2 trim 方法</h2><p> trim 方法的作用是,删除字符串两端的空格,中间的空格不予删除,如;</p>
<p> 字符串” 我 就是力量的 化身 “,经过trim方法后的结果为:</p>
<p> “我 就是力量的 化身”</p>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="built_in">string</span>&amp; <span class="title">str_trim</span><span class="params">(<span class="built_in">std</span>::<span class="built_in">string</span> &amp;s)</span> </span><br><span class="line"></span>&#123;</span><br><span class="line"> <span class="keyword">if</span> (s.empty()) </span><br><span class="line"> &#123;</span><br><span class="line"> return s;</span><br><span class="line"> &#125;</span><br><span class="line"></span><br><span class="line"> s.erase(<span class="number">0</span>,s.find_first_not_of(<span class="string">" "</span>)); </span><br><span class="line"> s.erase(s.find_last_not_of(<span class="string">" "</span>) + <span class="number">1</span>);</span><br><span class="line"> return s;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<h3 id="下篇-从C到C-3-:”万能”的vector"><a href="#下篇-从C到C-3-:”万能”的vector" class="headerlink" title="下篇 从C到C++(3):”万能”的vector"></a><a href="http://scannery.github.io/2016/05/30/cplus3/" target="_blank" rel="external">下篇</a> 从C到C++(3):”万能”的vector</h3></content>
<summary type="html">
<blockquote>
<p>本文将介绍C++的控制台输入输出,与string类的部分操作</p>
</blockquote>
<h1 id="1-你好,世界"><a href="#1-你好,世界" class="headerlink" title="1.你好,世界"></a>1.你好,世界</h1><p> 我们可以在任意文本编译器或IDE中,输入以下程序:</p>
<figure class="highlight c++"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#<span class="meta-keyword">include</span><span class="meta-string">&lt;iostream&gt;</span></span></span><br><span class="line"><span class="keyword">using</span> <span class="keyword">namespace</span> <span class="built_in">std</span>;</span><br><span class="line"><span class="function"><span class="keyword">void</span> <span class="title">main</span><span class="params">()</span></span><br><span class="line"></span>&#123;</span><br><span class="line"> <span class="built_in">cout</span>&lt;&lt;<span class="string">"hello world"</span>&lt;&lt;<span class="built_in">endl</span>;</span><br><span class="line"> system(<span class="string">"pause"</span>); <span class="comment">//用vs的同学请加上这句</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>
<p> 经过编译,就可以在 cmd 上看到我们的成果了<br>
</summary>
</entry>
<entry>
<title>如何hexo搭建属于自己的博客</title>
<link href="https://github.com/Scannery/Scannery.github.io/2016/05/13/blogmake/"/>
<id>https://github.com/Scannery/Scannery.github.io/2016/05/13/blogmake/</id>
<published>2016-05-13T14:27:59.915Z</published>
<updated>2016-05-14T02:56:04.392Z</updated>
<content type="html"><blockquote>
<p>本文旨在说明如何使用hexo搭建与操作博客的过程</p>
<p>感谢这位朋友的博客,让我得以搭建成功,关于github的操作大家可以参考<a href="http://www.jianshu.com/p/985d07d88ef4" target="_blank" rel="external">这篇文档</a></p>
<p>本篇默认读者为windows系统,并已经成功建立github的代码仓库,并安装了git shell;没有请参考上方文档</p>
<p>未建立代码仓库的读者,建议在读完上方文档关于github的操作后,返回读本章节</p>
</blockquote>
<h1 id="第一步-翻墙"><a href="#第一步-翻墙" class="headerlink" title="第一步.翻墙"></a>第一步.翻墙</h1><p> 这是非常重要的一步,没翻墙,访问github网址巨慢,这里提供一个出去的办法,戳<a href="http://pan.baidu.com/s/1nv9yZAp" target="_blank" rel="external">这里</a>获得软件,安装到电脑中并运行即可</p>
<blockquote>
<p>如果链接被吞或者想了解更多,戳<a href="http://nopescript.com/2016/05/11/great-wall-0/" target="_blank" rel="external">这里</a></p>
<p>提供一个备用软件,<a href="http://www.ishadowsocks.net/" target="_blank" rel="external">ishadowsocks</a></p>
</blockquote>
<a id="more"></a>
<h1 id="第二步-安装与配置hexo"><a href="#第二步-安装与配置hexo" class="headerlink" title="第二步.安装与配置hexo"></a>第二步.安装与配置hexo</h1><h2 id="1-git-shell简介"><a href="#1-git-shell简介" class="headerlink" title="1.git shell简介"></a>1.git shell简介</h2><p> git shell可以使你在电脑上运行shell语言,换而言之,你可以在这个窗口上运行部分linux系统上的命令行。你不懂也没关系,这里给出了一些常用的shell命令:</p>
<blockquote>
<p>方括号用来说明后边跟什么,输命令的时候不需要加上方括号</p>
<p>最后提醒一遍,不知道说啥的朋友请先看<a href="http://www.jianshu.com/p/985d07d88ef4" target="_blank" rel="external">这篇文档</a></p>
</blockquote>
<ul>
<li><p>cd [路径名]:进入指定路径. 如 <strong>cd c:\Users\temp</strong> 进入c\用户\temp的路径</p>
<blockquote>
<p>路径是什么呢?就是这个东西,表示控制终端工作的地方,如图:</p>
</blockquote>
<p><img src="http://i2.buimg.com/16d1c9d91dd04aff.jpg" alt=""></p>
<blockquote>
<p>特殊的,当前路径可以用 <strong>.</strong> 来表示,比如 <strong>cd .</strong> 就是进入当前文件夹,也就是没动……上一层的路径可以用 <strong>..</strong> 来表示, <strong>cd ..</strong> 就是进入上层路径</p>
</blockquote>
</li>
<li><p>touch [文件名]:创建指定文件.如 <strong>touch cac.txt</strong> 创建一个名为cac的txt文件</p>
</li>
<li><p>cat [文件名]:将指定文件打印到控制台</p>
</li>
<li><p>rm [文件名]:删除指定文件</p>
</li>
<li><p>vim [文件名]:用vim文本编辑器打开文件,熟悉这个命令的朋友可以用vim来编辑下边谈到的文件,不熟悉的朋友建议别碰</p>
</li>
</ul>
<h2 id="2-hexo安装与部署"><a href="#2-hexo安装与部署" class="headerlink" title="2.hexo安装与部署"></a>2.hexo安装与部署</h2><p> 打开gitshell,记住你的当前路径,输入以下命令进行安装:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">cnpm install hexo-cli -g</span><br></pre></td></tr></table></figure>
<blockquote>
<p>大部分教程里使用npm,这里使用cnpm,前边的c可以理解为China,下载起来更快一些。我们等下载成功之后,也就是出现的代码中不出现error,使用以下命令进行安装:</p>
<p>如果npm/cnmp无效,原因是Node.JS没有装好,建议重装,具体参考置顶链接</p>
</blockquote>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo init Hexo</span><br></pre></td></tr></table></figure>
<p> 这步出现以下返回即为安装成功:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">INFO Copying date to 你的路径\Hexo</span><br><span class="line">INFO You are almost done!…………</span><br></pre></td></tr></table></figure>
<p> 这步完成之后会在目录下生成hexo文件夹,我们需要在hexo文件夹里加入hexo运行需要的依赖文件,在控制台中输入以下命令:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">cd .\Hexo</span><br><span class="line">cnpm install</span><br></pre></td></tr></table></figure>
<p> 除此之外,我们还需要一些其他的依赖文件,输入以下命令:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">cnpm install hexo-generator-index --save</span><br><span class="line">cnpm install hexo-generator-archive --save</span><br><span class="line">cnpm install hexo-generator-category --save</span><br><span class="line">cnpm install hexo-generator-tag --save</span><br><span class="line">cnpm install hexo-deployer-git --save</span><br><span class="line">cnpm install hexo-deployer-heroku --save</span><br><span class="line">cnpm install hexo-deployer-rsync --save</span><br><span class="line">cnpm install hexo-deployer-openshift --save</span><br><span class="line">cnpm install [email protected] --save</span><br><span class="line">cnpm install [email protected] --save</span><br><span class="line">cnpm install hexo-generator-feed@1 --save</span><br><span class="line">cnpm install hexo-generator-sitemap@1 --save</span><br></pre></td></tr></table></figure>
<blockquote>
<p>如果cnpm命令失败,可以考虑去掉C使用npm,如果都不行,请检查网络</p>
</blockquote>
<h1 id="第三步-生成本地文件,并将其推到github"><a href="#第三步-生成本地文件,并将其推到github" class="headerlink" title="第三步.生成本地文件,并将其推到github"></a>第三步.生成本地文件,并将其推到github</h1><blockquote>
<p>本教程使用Sublime Text来编译文本,有经验的朋友可以用vim来编译</p>
<p><strong>不要直接用记事本打开</strong></p>
</blockquote>
<p> 下载 Sublime Text ,戳<a href="http://pan.baidu.com/s/1gf2PBJt" target="_blank" rel="external">这里</a>进行度盘下载,如链接失效,请在下载并购买正版,或网上随便找一个破解版。</p>
<p> 安装 sublime text,最好建个快捷方式到桌面,之后打开,点击 file\open Folder ,打开上面安装的hexo文件夹</p>
<blockquote>
<p>忘了路径的朋友可以打开 git shell 进行确认,就在 git shell 工作路径下</p>
</blockquote>
<p> 打开hexo文件夹里的 <strong>_config.yml</strong> ,找到文件尾,修改为如下格式:</p>
<blockquote>
<p>斜杠后边是注释,不要写上去</p>
</blockquote>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">deploy:</span><br><span class="line"> type: git //出错试试github</span><br><span class="line"> repository: https://github.com/Scannery/Scannery.github.io.git //此处为你github里代码仓库</span><br><span class="line"> branch: master</span><br></pre></td></tr></table></figure>
<blockquote>
<p><strong>注意</strong>!格式一点都不能变,deploy要顶格写,type/re/branch前边要有<strong>两个</strong>空格,冒号后边要有<strong>一个</strong>空格,还有,一定要用<strong>英文</strong>的冒号!!!</p>
</blockquote>
<p> 接下来,请依次输入以下命令:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">hexo g</span><br><span class="line">hexo d</span><br></pre></td></tr></table></figure>
<blockquote>
<p>g指generate,生成本地文件</p>
<p>d指deploy,将本地文件deploy到你用的github文件库里,这个需要联网的</p>
<p><strong>注意</strong>:</p>
<p>如果d不出现任何返回值,请检查是否遗漏步骤,漏掉必须的依赖</p>
<p>如果g失败,请检查_config.yml文件</p>
</blockquote>
<p> 接下来,就可以一睹你博客的真容了,取你的库地址如 <a href="https://github.com/Scannery/Scannery.github.io.git,去掉最后一个斜杠前边的部分和后边的git,如">https://github.com/Scannery/Scannery.github.io.git,去掉最后一个斜杠前边的部分和后边的git,如</a> Scannery.github.io,就是你的博客地址了。</p>
<p> 附一些_config.yml中常用可修改的地方:</p>
<ul>
<li><p><strong>title:</strong> 此为你博客网页的名称</p>
</li>
<li><p><strong>subtitle:</strong> 副标题,根据博客主题显示在不同的位置</p>
</li>
<li><p><strong>author:</strong> 作者,建议改成你自己的ID……</p>
</li>
<li><p><strong>url:</strong> 建议改为你自己的IO库</p>
<blockquote>
<p>注意,以上命令冒号后边一定要加个空格</p>
</blockquote>
</li>
</ul>
<h1 id="第四步-使用markdown书写一篇博文"><a href="#第四步-使用markdown书写一篇博文" class="headerlink" title="第四步.使用markdown书写一篇博文"></a>第四步.使用markdown书写一篇博文</h1><p> markdown是一种文本编写方式,可以实现书写+排版同时进行,节省排版的时间,详细参考<a href="http://baike.baidu.com/link?url=jIXWbh5bJdAgu65DV7ZnV3sH7ELKwp7G38VT0BhulUW-xraidGK3o5qDcBi3F4eaLVF5c2Ty1sderlmZ-b_iqa" target="_blank" rel="external">百度百科</a></p>
<h2 id="1-新建一个markdown文件"><a href="#1-新建一个markdown文件" class="headerlink" title="1.新建一个markdown文件"></a>1.新建一个markdown文件</h2><p> +在sublime里,寻找到hexo文件夹里的source文件夹,进入其中找到_posts,打开文件夹。</p>
<p> +<strong>点击左上角file,new file,创建一个新的文件,在sublime右下方找到plain text标签,左键,在列表中找到Markdown,点击并选取里边的markdown选项</strong></p>
<p> +按<strong>Ctrl+s</strong>,选择到hexo\source_post文件夹下,并保存。</p>
<p> +在新建的文件上点击右键rename,将其改为md后缀名</p>
<h2 id="2-简单的markdown编写"><a href="#2-简单的markdown编写" class="headerlink" title="2.简单的markdown编写"></a>2.简单的markdown编写</h2><blockquote>
<p>不加任何特殊符号的文本为普通文本</p>
</blockquote>
<ul>
<li>使用如下代码生成主标题:</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">---</span><br><span class="line">title: 如何hexo搭建属于自己的博客</span><br><span class="line">---</span><br></pre></td></tr></table></figure>
<ul>
<li>使用#,##,###表示一级,二级,三级标题,如:</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"># 标题1</span><br><span class="line">## 标题2</span><br><span class="line">### 标题3</span><br></pre></td></tr></table></figure>
<ul>
<li>使用如下方式高亮一段文本</li>
</ul>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">**你要高亮的文本**</span><br></pre></td></tr></table></figure>
<ul>
<li><p>使用<strong>+</strong>或<strong>-</strong>来生成无序表格,或标签:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">+ 文本1</span><br><span class="line">+ 文本2</span><br><span class="line">+ 文本3</span><br></pre></td></tr></table></figure>
</li>
<li><p>使用以下方式生成一个表格:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">| Tables | Are | Cool |</span><br><span class="line">| ------------- |:-------------:| -----:|</span><br><span class="line">| col 3 is | right-aligned | $1600 |</span><br><span class="line">| col 2 is | centered | $12 |</span><br><span class="line">| zebra stripes | are neat | $1 |</span><br></pre></td></tr></table></figure>
<p>效果如下:</p>
</li>
</ul>
<table>
<thead>
<tr>
<th>Tables</th>
<th style="text-align:center">Are</th>
<th style="text-align:right">Cool</th>
</tr>
</thead>
<tbody>
<tr>
<td>col 3 is</td>
<td style="text-align:center">right-aligned</td>
<td style="text-align:right">$1600</td>
</tr>
<tr>
<td>col 2 is</td>
<td style="text-align:center">centered</td>
<td style="text-align:right">$12</td>
</tr>
<tr>
<td>zebra stripes</td>
<td style="text-align:center">are neat</td>
<td style="text-align:right">$1</td>
</tr>
</tbody>
</table>
<ul>
<li>使用 <strong>&gt;</strong> 进行引用:<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&gt; 这段文字被引用了</span><br></pre></td></tr></table></figure>
</li>
</ul>
<p> 效果如下:</p>
<blockquote>
<p>这段文字被引用了</p>
</blockquote>
<ul>
<li><p>插入图片或链接:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">不知道说啥的朋友请先看[这篇文档](http://www.jianshu.com/p/985d07d88ef4)</span><br></pre></td></tr></table></figure>
<p>将文字扩方括号来表示点击区域,括号后方为链接</p>
<p>图片:</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">![](http://i2.buimg.com/16d1c9d91dd04aff.jpg)</span><br></pre></td></tr></table></figure>
<p>引用图片格式为,感叹号后接方括号,后面再接图片的网络地址</p>
<blockquote>
<p>网络图片的地址可以通过右键获得。本地图片可以上传到图床,比如<a href="http://tuchuang.org/" target="_blank" rel="external">这个</a>后获得网络地址</p>
</blockquote>
</li>
<li><p>插入代码块,使用上下各三个~来分割代码区。</p>
<blockquote>
<p><strong>在写作并保存博文后,在Git shell中先用hexo g,来更新本地文件,再使用hexo d推流到服务器端,就可以看到你写作好的博文啦,更换主题/或其他变动同理</strong></p>
</blockquote>
</li>
</ul>
<h1 id="第五步-配置hexo的主题"><a href="#第五步-配置hexo的主题" class="headerlink" title="第五步.配置hexo的主题"></a>第五步.配置hexo的主题</h1><p> 主题可以让你拥有自己的规划的外观,例如此处使用的yilia主题,详情参考<a href="https://github.com/litten/hexo-theme-yilia">此处</a></p>
<p> 主题存放在hexo\theme里,也有属于自己的_config.yml,可以通过修改这个文件进行主题操作,各主题相异就不具体讨论了。</p>
<blockquote>
<p>注意,主题_config.yml里的favicon是你的网站图标,需要为png格式</p>
</blockquote>
<p> 知乎大大推荐的主题,戳<a href="http://www.zhihu.com/question/24422335" target="_blank" rel="external">这里</a></p>
<h1 id="第六步-将主站挂到google"><a href="#第六步-将主站挂到google" class="headerlink" title="第六步.将主站挂到google"></a>第六步.将主站挂到google</h1><p> 百度作者并没有试过,大家可以试一试。好像要到百度的站长之家里看</p>
<p> google的话,使用Search Console添加即可,google自身提供了非常详细的教程,这里就不赘述了。</p>
<blockquote>
<p>如果采用html的验证方式,请将google给的文件放到hexo\public目录下即可</p>
</blockquote>
</content>
<summary type="html">
<blockquote>
<p>本文旨在说明如何使用hexo搭建与操作博客的过程</p>
<p>感谢这位朋友的博客,让我得以搭建成功,关于github的操作大家可以参考<a href="http://www.jianshu.com/p/985d07d88ef4">这篇文档</a></p>
<p>本篇默认读者为windows系统,并已经成功建立github的代码仓库,并安装了git shell;没有请参考上方文档</p>
<p>未建立代码仓库的读者,建议在读完上方文档关于github的操作后,返回读本章节</p>
</blockquote>
<h1 id="第一步-翻墙"><a href="#第一步-翻墙" class="headerlink" title="第一步.翻墙"></a>第一步.翻墙</h1><p> 这是非常重要的一步,没翻墙,访问github网址巨慢,这里提供一个出去的办法,戳<a href="http://pan.baidu.com/s/1nv9yZAp">这里</a>获得软件,安装到电脑中并运行即可</p>
<blockquote>
<p>如果链接被吞或者想了解更多,戳<a href="http://nopescript.com/2016/05/11/great-wall-0/">这里</a></p>
<p>提供一个备用软件,<a href="http://www.ishadowsocks.net/">ishadowsocks</a></p>
</blockquote>
</summary>
</entry>
<entry>
<title>从C到C++(1):面向对象是什么</title>
<link href="https://github.com/Scannery/Scannery.github.io/2016/05/12/cplus1/"/>
<id>https://github.com/Scannery/Scannery.github.io/2016/05/12/cplus1/</id>
<published>2016-05-12T11:31:57.848Z</published>
<updated>2016-05-19T13:09:13.825Z</updated>
<content type="html"><blockquote>
<p>本文目的是让读者更简单的理解面向对象的概念,所以会有不严谨的地方,请原谅</p>
<p>本系列内容适合有C基础的朋友阅读,如没有请戳<a href="http://c.biancheng.net/cpp/u/c18/" target="_blank" rel="external">这里</a></p>
</blockquote>
<h2 id="1-什么是对象"><a href="#1-什么是对象" class="headerlink" title="1.什么是对象"></a>1.什么是对象</h2><p> 对象是什么?你的女朋友,或者你未来会有的女朋友,然后呢,举个小学语文上的例子:</p>
<p> 小明在篮球场跳<a href="http://www.bilibili.com/video/av2130097/" target="_blank" rel="external">普通的disco</a></p>
<p> 是谁在篮球场发疯呢?是小明,也就是说,在篮球场上发疯的<strong>对象</strong>是<strong>小明</strong>,小明就是一个对象;那我们换个问法呢,小明在哪儿发疯呢?是篮球场,同理我们可以得出,<strong>篮球场</strong>是小明跳舞的<strong>对象</strong>。当然,智商比作者高的你肯定能得出一个结论,那普通的disco也是对象咯?答案是正确的,我们可以得出一个结论:</p>
<blockquote>
<p> <strong>万物皆对象</strong></p>
</blockquote>
<p> “但是,小明他爱跳跳,关我卵事啊?”</p>
<p> 是的,我们并不关心小明跳不跳舞,我们只关心我们需要的东西,所以,在编程中,我们将我们需要解决的问题,这个问题所需要的东西,抽象为对象。</p>