1 00:00:00,000 --> 00:00:01,000 [Powered by Google Translate] [Seksyon 6] [plis konfòtab] 2 00:00:01,000 --> 00:00:04,000 [Rob Bowden] [Inivèsite Harvard] 3 00:00:04,000 --> 00:00:09,000 [Sa a se CS50.] [CS50.TV] 4 00:00:09,000 --> 00:00:11,000 >> Nou ka mete tèt nan seksyon nou an kesyon. 5 00:00:11,000 --> 00:00:17,000 M 'te voye URL la pou espas ki la anvan. 6 00:00:17,000 --> 00:00:22,000 Nan konmansman an nan seksyon an nan kesyon yo di- 7 00:00:22,000 --> 00:00:26,000 aparamman mwen pa antyèman unsick-se yon kesyon trè fasil 8 00:00:26,000 --> 00:00:28,000 nan jis ki sa ki valgrind? 9 00:00:28,000 --> 00:00:30,000 Ki sa ki valgrind fè? 10 00:00:30,000 --> 00:00:34,000 Nenpòt moun ki vle di ki sa valgrind li fè? 11 00:00:34,000 --> 00:00:36,000 [Elèv] chèk memwa fwit. 12 00:00:36,000 --> 00:00:41,000 Yeah, valgrind se yon korektè memwa jeneral. 13 00:00:41,000 --> 00:00:44,000 Li, nan fen a, di ou si ou gen nenpòt fwit memwa, 14 00:00:44,000 --> 00:00:49,000 ki se sitou sa n ap sèvi ak li pou paske si ou vle 15 00:00:49,000 --> 00:00:54,000 fè byen nan ansanm lan pwoblèm oswa si ou vle 16 00:00:54,000 --> 00:00:59,000 jwenn sou tablo a gwo, ou bezwen pa gen okenn fwit memwa tou sa, 17 00:00:59,000 --> 00:01:01,000 ak nan ka ou gen yon fwit memwa ke ou pa ka jwenn, 18 00:01:01,000 --> 00:01:04,000 tou kenbe nan tèt ou ke chak fwa ou louvri yon dosye 19 00:01:04,000 --> 00:01:07,000 e si ou pa fèmen li, sa se yon fwit memwa. 20 00:01:07,000 --> 00:01:10,000 >> Yon anpil moun ap chèche pou kèk ne yo ke yo pa ap libere 21 00:01:10,000 --> 00:01:15,000 lè reyèlman, yo pa t 'fèmen diksyonè a nan etap la trè premye. 22 00:01:15,000 --> 00:01:19,000 Li te tou di ou si ou gen nenpòt envalid li oswa ekri, 23 00:01:19,000 --> 00:01:22,000 ki vle di si ou eseye, li mete yon valè 24 00:01:22,000 --> 00:01:26,000 sa a, se pi lwen pase nan fen pil wòch la e li pa rive fòt segman 25 00:01:26,000 --> 00:01:30,000 men valgrind kaptur li, jan ou pa ta dwe aktyèlman dwe ekri a, 26 00:01:30,000 --> 00:01:33,000 ak sa ou definitivman pa ta dwe gen nenpòt nan moun sa swa. 27 00:01:33,000 --> 00:01:38,000 Ki jan ou itilize valgrind? 28 00:01:38,000 --> 00:01:42,000 Ki jan ou itilize valgrind? 29 00:01:42,000 --> 00:01:45,000 >> Se yon kesyon jeneral sou 30 00:01:45,000 --> 00:01:49,000 kalite kouri li ak gade nan pwodiksyon an. 31 00:01:49,000 --> 00:01:51,000 Pwodiksyon an ap boulvèse yon anpil nan fwa. 32 00:01:51,000 --> 00:01:54,000 Genyen tou erè plezi kote si w gen kèk bagay fò anpil mal 33 00:01:54,000 --> 00:01:59,000 pase nan yon riban, lè sa a li pral evantyèlman di, "erè Way twòp. 34 00:01:59,000 --> 00:02:03,000 Mwen pral sispann konte kounye a. " 35 00:02:03,000 --> 00:02:08,000 Li nan fondamantalman pwodiksyon textuelle ki di ou gen analizan. 36 00:02:08,000 --> 00:02:13,000 Nan fen a, sa pral di ou kote dlo ap koule memwa ki di ou gen, 37 00:02:13,000 --> 00:02:16,000 konbyen blòk yo, ki kapab itil paske 38 00:02:16,000 --> 00:02:20,000 si li nan yon sèl unfreed blòk, Lè sa a, li la anjeneral pi fasil jwenn 39 00:02:20,000 --> 00:02:23,000 pase 1,000 blòk unfreed. 40 00:02:23,000 --> 00:02:26,000 1,000 blòk unfreed pwobableman vle di ou pa ap libere 41 00:02:26,000 --> 00:02:30,000 bay lis lye ou kòmsadwa oswa yon bagay. 42 00:02:30,000 --> 00:02:32,000 Sa se valgrind. 43 00:02:32,000 --> 00:02:35,000 >> Koulye a, nou gen seksyon nou an kesyon, 44 00:02:35,000 --> 00:02:38,000 ki ou pa bezwen telechaje. 45 00:02:38,000 --> 00:02:41,000 Ou ka klike sou non mwen ak rale yo moute nan espas la. 46 00:02:41,000 --> 00:02:44,000 Koulye a, klike sou m '. 47 00:02:44,000 --> 00:02:46,000 Revizyon 1 yo pral chemine, ki n ap fè an premye. 48 00:02:46,000 --> 00:02:55,000 Revizyon 2 pral nat, ak Revizyon 3 pral separeman lis la lye. 49 00:02:55,000 --> 00:02:58,000 Kòmanse koupe ak chemine nou an. 50 00:02:58,000 --> 00:03:02,000 Kòm li di isit la, yon pil se youn nan debaz a pi plis, 51 00:03:02,000 --> 00:03:07,000 done fondamantal estrikti nan syans òdinatè. 52 00:03:07,000 --> 00:03:11,000 Egzanp lan trè Prototype se 53 00:03:11,000 --> 00:03:13,000 chemine a nan plato nan sal la kote moun. 54 00:03:13,000 --> 00:03:16,000 Li nan fondamantalman nenpòt lè ou ki te a nan yon chemine, 55 00:03:16,000 --> 00:03:20,000 gen yon moun ki pral di, "O, tankou yon pil nan plato." 56 00:03:20,000 --> 00:03:22,000 Ou chemine plato yo leve. 57 00:03:22,000 --> 00:03:24,000 Lè sa a, lè ou ale nan rale yon plato, 58 00:03:24,000 --> 00:03:31,000 plato a premye ki nan ap resevwa rale a se youn nan dènye ki te mete yo sou pil la. 59 00:03:31,000 --> 00:03:34,000 Chemine a tou ki tankou li di isit la- 60 00:03:34,000 --> 00:03:37,000 nou gen segman an nan memwa rele pil la. 61 00:03:37,000 --> 00:03:40,000 Ak poukisa li te rele pil la? 62 00:03:40,000 --> 00:03:42,000 >> Paske tankou yon estrikti done chemine, 63 00:03:42,000 --> 00:03:46,000 li pouse ak Pops ankadreman chemine sou chemine a, 64 00:03:46,000 --> 00:03:53,000 kote ankadreman chemine yo tankou yon apèl espesifik nan yon fonksyon. 65 00:03:53,000 --> 00:03:57,000 Li te tankou yon pil, ou ap toujou gen retounen 66 00:03:57,000 --> 00:04:03,000 ki sòti nan yon apèl fonksyon anvan ou kapab jwenn desann nan pi ba ankadreman chemine ankò. 67 00:04:03,000 --> 00:04:08,000 Ou pa ka gen prensipal rele bar rele foo epi voye li retounen ba dirèkteman prensipal la. 68 00:04:08,000 --> 00:04:14,000 Li nan toujou te gen yo swiv chemine ki kòrèk la ap pouse ak eklate. 69 00:04:14,000 --> 00:04:18,000 Operasyon yo de, tankou m 'te di yo, se pouse ak pòp. 70 00:04:18,000 --> 00:04:20,000 Moun sa yo se tèm inivèsèl. 71 00:04:20,000 --> 00:04:26,000 Ou ta dwe konnen pouse ak pòp an tèm de pil pa gen pwoblèm sa. 72 00:04:26,000 --> 00:04:28,000 Nou pral wè ke moun kap kriye yo se kalite diferan. 73 00:04:28,000 --> 00:04:32,000 Li pa vrèman gen yon tèm inivèsèl, men pouse ak pòp yo inivèsèl pou pil. 74 00:04:32,000 --> 00:04:34,000 Pouse se jis mete yo sou pil la. 75 00:04:34,000 --> 00:04:37,000 Pòp se pou yo wete tout chemine a. 76 00:04:37,000 --> 00:04:43,000 E nou wè isit la nou gen chemine tipedèf struct nou an, 77 00:04:43,000 --> 00:04:46,000 konsa nou gen Char strings **. 78 00:04:46,000 --> 00:04:51,000 pa jwenn pè pa nenpòt **. 79 00:04:51,000 --> 00:04:54,000 Sa a se pral yo te fini yon seri strings 80 00:04:54,000 --> 00:04:58,000 oswa yon etalaj de pwent karaktè, kote 81 00:04:58,000 --> 00:05:00,000 endikasyon karaktè gen tandans yo dwe strings. 82 00:05:00,000 --> 00:05:05,000 Li pa dwe fè strings, men isit la, yo pwal santi yo dwe strings. 83 00:05:05,000 --> 00:05:08,000 >> Nou gen yon etalaj de strings. 84 00:05:08,000 --> 00:05:14,000 Nou gen yon gwosè, ki reprezante ki jan anpil eleman ki aktyèlman sou chemine a, 85 00:05:14,000 --> 00:05:19,000 ak Lè sa a, nou gen kapasite la, ki se ki jan anpil eleman yo ka sou pil la. 86 00:05:19,000 --> 00:05:22,000 Kapasite a ta dwe kòmanse nan kòm yon bagay ki pi konsekan pase 1, 87 00:05:22,000 --> 00:05:27,000 men gwosè a ki pral kòmanse nan kòm 0. 88 00:05:27,000 --> 00:05:36,000 Koulye a, gen fondamantalman twa fason diferan ou ka panse a yon pil. 89 00:05:36,000 --> 00:05:39,000 Oke, gen yo se pwobableman plis, men de fason yo prensipal yo se 90 00:05:39,000 --> 00:05:43,000 ou ka aplike li lè l sèvi avèk yon etalaj, oswa ou ka aplike li lè l sèvi avèk yon lis lye. 91 00:05:43,000 --> 00:05:48,000 Linked bay lis yo se kalite trivial fè pil nan. 92 00:05:48,000 --> 00:05:51,000 Li trè fasil fè yon pil lè l sèvi avèk lis lye, 93 00:05:51,000 --> 00:05:55,000 Se konsa isit la, nou pwal fè yon pil lè l sèvi avèk ranje, 94 00:05:55,000 --> 00:05:59,000 ak Lè sa a, lè l sèvi avèk ranje, gen nan tou de fason ou ka panse sou li. 95 00:05:59,000 --> 00:06:01,000 Anvan, lè m 'te di nou gen yon kapasite pou chemine a, 96 00:06:01,000 --> 00:06:04,000 pou nou ka anfòm yon eleman sou pil la. 97 00:06:04,000 --> 00:06:09,000 >> Wout la yon sèl li te ka rive se le pli vit ke ou frape 10 eleman, Lè sa a, w ap fè. 98 00:06:09,000 --> 00:06:13,000 Ou ta ka konnen ke gen se yon anwo mare l 'nan 10 bagay sa yo nan mond lan 99 00:06:13,000 --> 00:06:16,000 ke ou pa janm ap gen plis pase 10 bagay sa yo sou pil ou an, 100 00:06:16,000 --> 00:06:20,000 nan ka sa a ou ka gen yon anwo mare l 'sou gwosè a nan chemine ou an. 101 00:06:20,000 --> 00:06:23,000 Oswa ou ta ka genyen ap chemine ou illimité, 102 00:06:23,000 --> 00:06:27,000 Men, si ou ap fè yon etalaj, ki vle di ke chak fwa ou frape yon sèl 10 eleman, 103 00:06:27,000 --> 00:06:29,000 Lè sa a, w ap ale nan gen pou grandi pou 20 eleman, ak ki lè ou frape 20 eleman, 104 00:06:29,000 --> 00:06:33,000 w ap ale nan gen yo grandi etalaj ou a 30 eleman oswa 40 eleman. 105 00:06:33,000 --> 00:06:37,000 W ap ale nan bezwen ogmante kapasite la, ki se ki sa nou ap ale nan fè isit la. 106 00:06:37,000 --> 00:06:40,000 Chak fwa yon sèl nou rive gwosè a maksimòm de pil nou an, 107 00:06:40,000 --> 00:06:46,000 lè nou pouse yon lòt bagay sou li a, nou pral bezwen ogmante kapasite la. 108 00:06:46,000 --> 00:06:50,000 Isit la, nou te pouse deklare kòm pouse bouleen (Char * str). 109 00:06:50,000 --> 00:06:54,000 Str Char * se fisèl la ke nou ap pouse sou chemine a, 110 00:06:54,000 --> 00:06:58,000 ak bouleen jis di si nou nan plas oswa echwe. 111 00:06:58,000 --> 00:07:00,000 >> Ki jan nou ka fail? 112 00:07:00,000 --> 00:07:04,000 Ki sa ki sikonstans la sèlman ke ou ka panse a 113 00:07:04,000 --> 00:07:07,000 kote nou ta bezwen retounen fo? 114 00:07:07,000 --> 00:07:09,000 Yeah. 115 00:07:09,000 --> 00:07:12,000 [Elèv] Si li la plen ak nou ap sèvi ak yon aplikasyon limite. 116 00:07:12,000 --> 00:07:17,000 Yeah, se konsa ki jan nou defini-li te reponn 117 00:07:17,000 --> 00:07:23,000 si li nan plen e nou ap itilize yon aplikasyon atache. 118 00:07:23,000 --> 00:07:26,000 Lè sa a, nou definitivman pwal retounen fo. 119 00:07:26,000 --> 00:07:31,000 Osito ke nou frape 10 bagay sa yo nan etalaj la, nou pa ka anfòm 11, pou nou retounen fo. 120 00:07:31,000 --> 00:07:32,000 E si li se illimité? Yeah. 121 00:07:32,000 --> 00:07:38,000 Si ou pa kapab elaji etalaj la pou kèk rezon. 122 00:07:38,000 --> 00:07:43,000 Yeah, se konsa memwa se yon resous ki limite, 123 00:07:43,000 --> 00:07:51,000 ak evantyèlman, si nou kenbe pouse bagay sa yo sou chemine a sou yo ak sou ankò, 124 00:07:51,000 --> 00:07:54,000 nou pwal eseye yo e pou alwe yon etalaj pi gwo nan anfòm 125 00:07:54,000 --> 00:07:59,000 kapasite ki pi gwo a, ak malok oswa kèlkeswa sa nou ap lè l sèvi avèk ki pral retounen fo. 126 00:07:59,000 --> 00:08:02,000 Oke, malok ap retounen nil. 127 00:08:02,000 --> 00:08:05,000 >> Sonje byen, chak fwa yon sèl ou te janm rele malok, ou ta dwe tcheke yo wè si li 128 00:08:05,000 --> 00:08:12,000 retounen nil oswa lòt moun ki se yon dediksyon ekzaktitid. 129 00:08:12,000 --> 00:08:17,000 Depi nou vle gen yon chemine illimité, 130 00:08:17,000 --> 00:08:21,000 ka a sèlman nou ap pral retounen fo se si nou eseye 131 00:08:21,000 --> 00:08:26,000 ogmante kapasite la ak malok oswa kèlkeswa sa retounen fo. 132 00:08:26,000 --> 00:08:30,000 Lè sa a, pòp pa pran agiman, 133 00:08:30,000 --> 00:08:37,000 ak li retounen fisèl la ki se sou tèt la nan chemine a. 134 00:08:37,000 --> 00:08:41,000 Kèlkeswa sa ki te pi resamman pouse sou chemine a se sa ki pòp ki retounen, 135 00:08:41,000 --> 00:08:44,000 ak li tou retire li nan men pil la. 136 00:08:44,000 --> 00:08:50,000 Ak avi ke li retounen nil si pa gen anyen sou pil la. 137 00:08:50,000 --> 00:08:53,000 Li se toujou posib ke chemine a se vid. 138 00:08:53,000 --> 00:08:55,000 Nan Java, si w ap itilize ak sa yo ki, oswa lòt lang yo, 139 00:08:55,000 --> 00:09:01,000 ap eseye pòp soti nan yon chemine vid ta kapab lakòz yon eksepsyon oswa yon bagay. 140 00:09:01,000 --> 00:09:09,000 >> Men, nan C, nil se kalite yon anpil nan ka yo ki jan nou okipe pwoblèm sa yo. 141 00:09:09,000 --> 00:09:13,000 Retounen nil ki jan nou ap ale nan siyifi ke chemine a te vid. 142 00:09:13,000 --> 00:09:16,000 Nou te bay kòd ki pral teste fonctionnalités chemine ou a, 143 00:09:16,000 --> 00:09:19,000 aplike pouse ak pòp. 144 00:09:19,000 --> 00:09:23,000 Sa a pa pral yon anpil nan kòd. 145 00:09:23,000 --> 00:09:40,000 Mwen pral-aktyèlman, anvan nou fè sa, allusion, allusion- 146 00:09:40,000 --> 00:09:44,000 si ou pa fin wè li, malok se pa fonksyon a sèlman 147 00:09:44,000 --> 00:09:47,000 ki repati memwa sou pil wòch la pou ou. 148 00:09:47,000 --> 00:09:51,000 Gen yon fanmi ki gen fonksyon alok. 149 00:09:51,000 --> 00:09:53,000 Premye a se malok, ki w ap itilize yo. 150 00:09:53,000 --> 00:09:56,000 Lè sa a, gen nan calloc, ki fè sa ki menm bagay la kòm malok, 151 00:09:56,000 --> 00:09:59,000 men li pral zewo tout bagay soti pou ou. 152 00:09:59,000 --> 00:10:04,000 Si ou te janm te vle mete tout bagay sa yo nil apre mallocing yon bagay 153 00:10:04,000 --> 00:10:06,000 ou ta dwe gen sèlman itilize calloc an plas an premye olye pou yo ekri 154 00:10:06,000 --> 00:10:09,000 yon pou riban a zewo soti blòk la tout antye de memwa. 155 00:10:09,000 --> 00:10:15,000 >> Realloc, se tankou malok e li gen yon anpil nan ka espesyal, 156 00:10:15,000 --> 00:10:19,000 men fondamantalman sa realloc fè, se 157 00:10:19,000 --> 00:10:24,000 li pran yon konsèy ki te deja te afekte. 158 00:10:24,000 --> 00:10:27,000 Realloc se fonksyon a ou vle yo dwe peye atansyon sou isit la. 159 00:10:27,000 --> 00:10:31,000 Li pran yon konsèy ki te deja te tounen soti nan malok. 160 00:10:31,000 --> 00:10:35,000 Se pou nou di ou mande soti nan malok yon konsèy nan 10 bytes. 161 00:10:35,000 --> 00:10:38,000 Lè sa a, pita ou reyalize ou te vle 20 bytes, 162 00:10:38,000 --> 00:10:42,000 konsa ou rele realloc sou sa konsèy ki gen 20 bytes, 163 00:10:42,000 --> 00:10:47,000 ak realloc pral otomatikman kopi sou tout bagay pou ou. 164 00:10:47,000 --> 00:10:51,000 Si ou jis rele malok ankò, tankou mwen gen yon blòk nan 10 bytes. 165 00:10:51,000 --> 00:10:53,000 Kounye a mwen bezwen yon blòk nan 20 bytes, 166 00:10:53,000 --> 00:10:58,000 Se konsa, si mwen malok 20 bytes, lè sa a mwen gen a manuelman kopye sou bytes yo 10 soti nan premye bagay la 167 00:10:58,000 --> 00:11:01,000 nan bagay la dezyèm ak Lè sa a, gratis bagay la an premye. 168 00:11:01,000 --> 00:11:04,000 Realloc a ap fè ki pou ou. 169 00:11:04,000 --> 00:11:11,000 >> Avi siyati ki a pwal * anile, 170 00:11:11,000 --> 00:11:15,000 ki se jis retounen yon konsèy blòk la nan memwa, 171 00:11:15,000 --> 00:11:17,000 Lè sa a, anile * ptr. 172 00:11:17,000 --> 00:11:22,000 Ou ka panse a * anile kòm yon konsèy jenerik. 173 00:11:22,000 --> 00:11:27,000 Anjeneral, ou pa janm fè fas ak * anile, 174 00:11:27,000 --> 00:11:30,000 men malok ki retounen yon * anile, ak Lè sa a, li nan jis itilize tankou 175 00:11:30,000 --> 00:11:34,000 Sa a se aktyèlman ale nan yon * Char. 176 00:11:34,000 --> 00:11:37,000 * Nan anile anvan ki te tounen pa malok 177 00:11:37,000 --> 00:11:41,000 se kounye a yo pral pase bay realloc, ak Lè sa a, gwosè 178 00:11:41,000 --> 00:11:49,000 se nimewo a nouvo sou bytes ou vle asiyen, se konsa kapasite nouvo ou an. 179 00:11:49,000 --> 00:11:57,000 Mwen pral ba w yon minit koup, ak fè li nan espas nou yo. 180 00:11:57,000 --> 00:12:02,000 Kòmanse ak Revizyon 1. 181 00:12:16,000 --> 00:12:21,000 Mwen pral sispann ou apre èspere ke sou tan ase yo aplike pouse, 182 00:12:21,000 --> 00:12:24,000 ak Lè sa a, mwen pral ban nou yon lòt repo fè pòp. 183 00:12:24,000 --> 00:12:27,000 Men, li vrèman se pa sa ki kòd anpil nan tout. 184 00:12:27,000 --> 00:12:35,000 Kòd la se pwobableman pi bagay la agrandi, yo te agrandi kapasite la. 185 00:12:35,000 --> 00:12:39,000 Oke, pa gen presyon yo dwe konplètman fè a, 186 00:12:39,000 --> 00:12:47,000 men osi lontan ke ou santi ou tankou w ap sou chemen dwat la, ki nan bon. 187 00:12:47,000 --> 00:12:53,000 >> nenpòt moun ki gen nenpòt kòd yo santi yo konfòtab avè m 'rale moute? 188 00:12:53,000 --> 00:12:59,000 Yeah, mwen menm mwen, men nenpòt moun ki gen nenpòt kòd mwen ka rale moute? 189 00:12:59,000 --> 00:13:05,000 Okay, ou ka kòmanse, sove li, tou sa li se? 190 00:13:05,000 --> 00:13:09,000 Mwen toujou bliye ke etap. 191 00:13:09,000 --> 00:13:15,000 Okay, gade nan pouse, 192 00:13:15,000 --> 00:13:18,000 ou vle eksplike kòd ou a? 193 00:13:18,000 --> 00:13:24,000 [Elèv] Premye a tout, mwen ogmante gwosè a. 194 00:13:24,000 --> 00:13:28,000 Mwen devine petèt mwen ta dwe gen sa-de tout fason, mwen ogmante gwosè a, 195 00:13:28,000 --> 00:13:31,000 e mwen wè si li nan mwens pase kapasite la. 196 00:13:31,000 --> 00:13:36,000 Men, si li nan mwens pase kapasite a, mwen ajoute nan etalaj la ke nou te deja gen. 197 00:13:36,000 --> 00:13:42,000 Men, si li pa, mwen anpil anpil pitit kapasite a pa 2, 198 00:13:42,000 --> 00:13:50,000 epi mwen aloue etalaj la strings a yon bagay ki gen yon gwosè pi gwo kapasite kounye a. 199 00:13:50,000 --> 00:13:55,000 Lè sa a, si sa echwe, mwen di itilizatè a epi retounen fo, 200 00:13:55,000 --> 00:14:04,000 epi si li nan amann, Lè sa a, mwen mete fisèl la an plas nan nouvo. 201 00:14:04,000 --> 00:14:07,000 >> [Rob B.] Epitou avi ke nou itilize yon bèl lojik operatè isit la 202 00:14:07,000 --> 00:14:09,000 Miltipliye pa 2. 203 00:14:09,000 --> 00:14:11,000 Sonje byen, bò gòch chanjman se toujou yo pral miltipliye pa 2. 204 00:14:11,000 --> 00:14:15,000 Se dwa chanjman divize pa 2 osi lontan ke ou sonje ke li vle di 205 00:14:15,000 --> 00:14:18,000 divize pa 2 kòm nan yon nonb antye relatif divize pa 2. 206 00:14:18,000 --> 00:14:20,000 Li ta ka tronke yon 1 isit la oswa si gen. 207 00:14:20,000 --> 00:14:26,000 Men, chanjman kite nan 1 se toujou yo pral miltipliye pa 2, 208 00:14:26,000 --> 00:14:32,000 sof si ou debòde avèk limit yo nan nonb antye relatif la, ak Lè sa a, li pa pral. 209 00:14:32,000 --> 00:14:34,000 Yon kòmantè bò. 210 00:14:34,000 --> 00:14:39,000 Mwen renmen fè-sa a pa pral chanje kodaj nan nenpòt fason tou, 211 00:14:39,000 --> 00:14:48,000 men mwen renmen fè yon bagay tankou sa a. 212 00:14:48,000 --> 00:14:51,000 Li aktyèlman ki pral fè l 'yon ti kras pi lontan. 213 00:15:04,000 --> 00:15:08,000 Petèt sa a se pa ka a pafè a montre sa a, 214 00:15:08,000 --> 00:15:14,000 men mwen renmen l 'nan segman sa yo blòk an- 215 00:15:14,000 --> 00:15:17,000 oke, si sa a si rive, Lè sa a, mwen pral fè yon bagay, 216 00:15:17,000 --> 00:15:19,000 ak Lè sa a, se fonksyon an fè. 217 00:15:19,000 --> 00:15:22,000 Mwen pa bezwen Lè sa a, woulo liv je m 'tout wout la desann fonksyon an 218 00:15:22,000 --> 00:15:25,000 yo wè sa ki rive apre lòt la. 219 00:15:25,000 --> 00:15:27,000 Li nan si sa a si rive, Lè sa a, mwen jis retounen. 220 00:15:27,000 --> 00:15:30,000 Li tou te gen benefis la te ajoute nan bèl tout bagay pi lwen pase sa a 221 00:15:30,000 --> 00:15:33,000 se kounye a deplase kite yon fwa. 222 00:15:33,000 --> 00:15:40,000 Mwen pa bezwen ankò-si ou te janm toupre ridikulousli liy long, 223 00:15:40,000 --> 00:15:45,000 Lè sa a, moun ki bytes 4 ka ede, epi tou li yon bagay an plis gòch se, 224 00:15:45,000 --> 00:15:48,000 mwens akable a ou santi ou si renmen-oke, mwen gen yo sonje 225 00:15:48,000 --> 00:15:53,000 Mwen kounye a nan yon riban pandan y ap andedan nan yon andedan lòt bagay nan yon riban pou. 226 00:15:53,000 --> 00:15:58,000 Nenpòt kote ou ka fè sa tounen imedyatman, mwen kalite tankou. 227 00:15:58,000 --> 00:16:05,000 Li nan totalman si ou vle epi yo pa panse nan okenn fason. 228 00:16:05,000 --> 00:16:12,000 >> [Elèv] Dwe gen yon gwosè - nan yon kondisyon pou abandonne? 229 00:16:12,000 --> 00:16:19,000 Kondisyon nan abandonne isit la se nou echwe pou pou realloc, se konsa wi. 230 00:16:19,000 --> 00:16:22,000 Avi sou jan nan yon kondisyon pou echwe, prezimableman, 231 00:16:22,000 --> 00:16:26,000 sof si nou gratis bagay apre sa, n ap toujou ale nan fail 232 00:16:26,000 --> 00:16:29,000 pa gen pwoblèm konbyen fwa nou eseye pouse yon bagay. 233 00:16:29,000 --> 00:16:32,000 Si nou kenbe pouse, nou kenbe incrementing gwosè, 234 00:16:32,000 --> 00:16:36,000 menm si nou pa mete anyen sou pil la. 235 00:16:36,000 --> 00:16:39,000 Anjeneral nou pa kantite gwosè a jiskaske 236 00:16:39,000 --> 00:16:43,000 apre nou fin gen anpil siksè mete l 'sou pil la. 237 00:16:43,000 --> 00:16:50,000 Nou ta fè l ', di, swa isit la ak isit la. 238 00:16:50,000 --> 00:16:56,000 Lè sa a, olye pou yo li di s.size ≤ kapasite, li nan mwens pase kapasite, 239 00:16:56,000 --> 00:17:01,000 sèlman paske nou te bwote kote tout bagay te ye a. 240 00:17:01,000 --> 00:17:07,000 >> Epi sonje, kote a sèlman ke nou kapab pètèt retounen fo 241 00:17:07,000 --> 00:17:14,000 se isit la, kote realloc tounen nil, 242 00:17:14,000 --> 00:17:19,000 ak si ou rive sonje estanda erè, 243 00:17:19,000 --> 00:17:22,000 petèt ou ta ka konsidere ka sa a yon kote ou vle enprime yon erè estanda, 244 00:17:22,000 --> 00:17:26,000 Se konsa fprintf stder olye pou yo jis enprime dirèkteman nan soti estanda. 245 00:17:26,000 --> 00:17:31,000 Yon fwa ankò, sa a pa yon atant, men si li nan yon erè, 246 00:17:31,000 --> 00:17:41,000 tape printf, lè sa a ou ta ka vle fè li enprime yon erè estanda olye pou yo soti estanda. 247 00:17:41,000 --> 00:17:44,000 >> Nenpòt moun ki gen nenpòt lòt bagay sonje? Wi. 248 00:17:44,000 --> 00:17:47,000 [Elèv] Èske ou ka ale sou [fèbl] a? 249 00:17:47,000 --> 00:17:55,000 [Rob B.] Wi, binariness aktyèl la nan li oswa jis sa li ye? 250 00:17:55,000 --> 00:17:57,000 [Elèv] Se konsa, ou anpil anpil pitit li pa 2? 251 00:17:57,000 --> 00:17:59,000 [Rob B.] Yeah, fondamantalman. 252 00:17:59,000 --> 00:18:11,000 Nan peyi binè, nou toujou gen seri nou an chif. 253 00:18:11,000 --> 00:18:22,000 Déplacement sa a gòch pa 1 fondamantalman mete anndan li isit la nan bò dwat la. 254 00:18:22,000 --> 00:18:25,000 Retounen nan sa a, jis sonje ke tout bagay nan binè 255 00:18:25,000 --> 00:18:28,000 se yon pouvwa nan 2, kidonk sa a reprezante 2 a 0 a, 256 00:18:28,000 --> 00:18:30,000 sa a 2 a 1 nan, sa a 2 nan 2 a. 257 00:18:30,000 --> 00:18:33,000 By yo mete yon 0 a bò dwat la, koulye a, nou jis chanjman tout bagay sou. 258 00:18:33,000 --> 00:18:38,000 Ki sa ki itilize yo dwe 2 a 0 a se kounye a 2 a 1 la, se 2 nan 2 a. 259 00:18:38,000 --> 00:18:41,000 Bò dwat la ke nou mete 260 00:18:41,000 --> 00:18:44,000 se nesesèman pral fè 0, 261 00:18:44,000 --> 00:18:46,000 ki fè sans. 262 00:18:46,000 --> 00:18:49,000 Si ou janm Miltipliye yon nonm pa 2, li pa pral fini enpè, 263 00:18:49,000 --> 00:18:54,000 Se konsa 2 a nan plas la 0 yo ta dwe 0, 264 00:18:54,000 --> 00:18:59,000 ak sa a se sa m 'mwatye te avèti sou anvan se si ou rive chanje 265 00:18:59,000 --> 00:19:01,000 pi lwen pase ki kantite Bits nan yon nonb antye relatif, 266 00:19:01,000 --> 00:19:04,000 Lè sa a, sa a 1 a pral fini pral la. 267 00:19:04,000 --> 00:19:10,000 Sa a se sèlman enkyete a si ou rive yo dwe fè fas ak kapasite reyèlman gwo. 268 00:19:10,000 --> 00:19:15,000 Men, nan pwen sa a, lè sa a ou ap fè fas ak yon etalaj de dè milya de bagay sa yo, 269 00:19:15,000 --> 00:19:25,000 ki pa ta ka anfòm nan memwa de tout fason. 270 00:19:25,000 --> 00:19:31,000 >> Koulye a, nou kapab jwenn pòp, ki se menm vin pi fasil. 271 00:19:31,000 --> 00:19:36,000 Ou te kapab li renmen si ou rive pòp yon pakèt antye, 272 00:19:36,000 --> 00:19:38,000 e kounye a, ou se nan mwatye kapasite ankò. 273 00:19:38,000 --> 00:19:42,000 Ou te kapab realloc retresi kantite a memwa ou genyen, 274 00:19:42,000 --> 00:19:47,000 men ou pa gen enkyete sou sa, se konsa ka a realloc sèlman a pwal 275 00:19:47,000 --> 00:19:50,000 ap grandi memwa, pa janm réduction memwa, 276 00:19:50,000 --> 00:19:59,000 ki se pwal fè super pòp fasil. 277 00:19:59,000 --> 00:20:02,000 Koulye a, ke moun kap kriye yo, ki pral fè tankou pil, 278 00:20:02,000 --> 00:20:06,000 men se lòd la ke ou pran bagay sa yo deyò ranvèse. 279 00:20:06,000 --> 00:20:10,000 Egzanp lan Prototype nan yon nat se yon liy, 280 00:20:10,000 --> 00:20:12,000 Se konsa, mwen devine si ou te angle, mwen ta gen tan di 281 00:20:12,000 --> 00:20:17,000 yon egzanp Prototype nan yon nat se yon nat. 282 00:20:17,000 --> 00:20:22,000 Se konsa, tankou yon liy, si ou se premye moun ki nan liy, 283 00:20:22,000 --> 00:20:24,000 ou espere yo dwe premye moun ki soti nan liy lan. 284 00:20:24,000 --> 00:20:31,000 Si ou se moun nan dènye nan liy, ou yo ale nan se moun ki sot pase a serviced. 285 00:20:31,000 --> 00:20:35,000 Nou rele sa modèl FIFO, Lè nou konsidere ke pil te LIFO modèl. 286 00:20:35,000 --> 00:20:40,000 Moun sa yo ki mo yo trè inivèsèl. 287 00:20:40,000 --> 00:20:46,000 >> Menm jan ak pil ak kontrèman ak ranje, ke moun kap kriye tipikman pa pèmèt aksè nan eleman nan mitan yo. 288 00:20:46,000 --> 00:20:50,000 Isit la, yon pil, nou gen pouse ak pòp. 289 00:20:50,000 --> 00:20:54,000 Isit la, nou rive yo te rele yo enqueue ak dequeue. 290 00:20:54,000 --> 00:20:58,000 Mwen gen tou tande yo t'ap rele chanjman ak enchif. 291 00:20:58,000 --> 00:21:02,000 Mwen te konn tande moun di pouse ak pòp aplike tou nan ke moun kap kriye. 292 00:21:02,000 --> 00:21:05,000 Mwen te tande insert, retire, 293 00:21:05,000 --> 00:21:11,000 Se konsa pouse ak pòp, si w ap pale de pil, ou ap pouse ak eklate. 294 00:21:11,000 --> 00:21:16,000 Si w ap pale de ke moun kap kriye, ou ta ka chwazi mo sa yo ou vle itilize 295 00:21:16,000 --> 00:21:23,000 pou ensèsyon ak retire, epi pa gen okenn konsansis sou sa li ta dwe rele. 296 00:21:23,000 --> 00:21:27,000 Men, isit la, nou gen enqueue ak dequeue. 297 00:21:27,000 --> 00:21:37,000 Koulye a, struct a sanble prèske ki idantik ak struct nan chemine. 298 00:21:37,000 --> 00:21:40,000 Men, nou gen nan kenbe tras nan tèt yo. 299 00:21:40,000 --> 00:21:44,000 Mwen devine li di desann isit la, men poukisa nou bezwen tèt la? 300 00:21:53,000 --> 00:21:57,000 Prototip yo se fondamantalman ki idantik ak pouse ak pòp. 301 00:21:57,000 --> 00:21:59,000 Ou ka panse a li kòm pouse ak pòp. 302 00:21:59,000 --> 00:22:08,000 Sèl diferans ki genyen se pòp ki retounen-olye pou yo dènye a, li la retounen premye a. 303 00:22:08,000 --> 00:22:12,000 2, 1, 3, 4, oswa yon bagay. 304 00:22:12,000 --> 00:22:14,000 Ak isit la a nan kòmansman an. 305 00:22:14,000 --> 00:22:17,000 Nat nou an se konplètman plen, se konsa gen nan kat eleman nan li. 306 00:22:17,000 --> 00:22:21,000 Nan fen nat nou se kounye a 2, 307 00:22:21,000 --> 00:22:24,000 e kounye a nou ale nan insert yon lòt bagay. 308 00:22:24,000 --> 00:22:29,000 >> Lè nou vle insert ki yon lòt bagay, ki sa nou te fè sa pou vèsyon an pil 309 00:22:29,000 --> 00:22:36,000 se nou pwolonje blòk nou an memwa. 310 00:22:36,000 --> 00:22:40,000 Ki sa ki pwoblèm nan ak sa a? 311 00:22:40,000 --> 00:22:45,000 [Elèv] Ou deplase 2 a. 312 00:22:45,000 --> 00:22:51,000 Ki sa mwen te di anvan sou la fen nat la, 313 00:22:51,000 --> 00:22:57,000 sa a pa fè sans ke nou kòmanse nan 1, 314 00:22:57,000 --> 00:23:01,000 Lè sa a, nou vle dequeue 1, Lè sa a, dequeue 3, Lè sa a, dequeue 4, 315 00:23:01,000 --> 00:23:05,000 Lè sa a, dequeue 2, Lè sa a, dequeue yon sèl sa a. 316 00:23:05,000 --> 00:23:08,000 Nou pa ka sèvi ak realloc kounye a, 317 00:23:08,000 --> 00:23:11,000 oswa omwen nan anpil, ou gen yo sèvi ak realloc nan yon fason diferan. 318 00:23:11,000 --> 00:23:15,000 Men, pwobableman ou pa ta dwe jis itilize realloc. 319 00:23:15,000 --> 00:23:18,000 Ou yo ale nan gen a manuelman kopi memwa ou. 320 00:23:18,000 --> 00:23:21,000 >> Gen de fonksyon a kapab bay kopi memwa. 321 00:23:21,000 --> 00:23:25,000 Genyen nan memcopy ak memmove. 322 00:23:25,000 --> 00:23:29,000 Mwen kounye a nan lekti paj yo nonm yo wè ki youn ou ap ale nan vle itilize. 323 00:23:29,000 --> 00:23:35,000 Okay, memcopy, diferans lan se 324 00:23:35,000 --> 00:23:38,000 ki memcopy ak memmove, youn manch ka a kòrèkteman 325 00:23:38,000 --> 00:23:41,000 ki kote ou kopye nan yon rejyon ki k ap pase nan sipèpoze rejyon an 326 00:23:41,000 --> 00:23:46,000 w ap kopye soti nan. 327 00:23:46,000 --> 00:23:50,000 Memcopy Pa manyen li. Memmove fè. 328 00:23:50,000 --> 00:23:59,000 Ou ka panse a pwoblèm nan kòm- 329 00:23:59,000 --> 00:24:09,000 Se pou nou di mwen vle yon kopi sa a Guy, 330 00:24:09,000 --> 00:24:13,000 sa yo kat nan sa a Guy sou. 331 00:24:13,000 --> 00:24:16,000 Nan fen a, ki sa ki etalaj la ta dwe gade tankou 332 00:24:16,000 --> 00:24:26,000 apre kopi a se 2, 1, 2, 1, 3, 4, ak Lè sa a, kèk bagay nan fen an. 333 00:24:26,000 --> 00:24:29,000 Men, sa a se depann sou nan ki lòd nou aktyèlman kopi, 334 00:24:29,000 --> 00:24:32,000 depi si nou pa konsidere lefèt ke rejyon an ke nou ap kopye nan 335 00:24:32,000 --> 00:24:35,000 doubl yon sèl an ke nou ap kopye soti nan, 336 00:24:35,000 --> 00:24:46,000 Lè sa a, nou ta ka fè tankou kòmansman isit la, kopye 2 a nan plas la nou vle ale a, 337 00:24:46,000 --> 00:24:52,000 lè sa a deplase bagèt an avan. 338 00:24:52,000 --> 00:24:56,000 >> Koulye a, nou pral yo dwe isit la ak isit la, e kounye a, nou vle yon kopi 339 00:24:56,000 --> 00:25:04,000 sa a Guy sou sa a Guy yo epi li deplase bagèt an avan. 340 00:25:04,000 --> 00:25:07,000 Ki sa nou ap ale nan fini ap resevwa se 2, 1, 2, 1, 2, 1 341 00:25:07,000 --> 00:25:10,000 olye pou yo 2 a ki apwopriye, 1, 2, 1, 3, 4, paske 342 00:25:10,000 --> 00:25:15,000 2, 1 anporte 3 orijinal la, 4. 343 00:25:15,000 --> 00:25:19,000 Memmove pwaye ki kòrèkteman. 344 00:25:19,000 --> 00:25:23,000 Nan ka sa a, bazikman jis toujou itilize memmove 345 00:25:23,000 --> 00:25:26,000 paske li kenbe li yo kòrèkteman. 346 00:25:26,000 --> 00:25:29,000 Li jeneralman pa fè okenn vin pi mal. 347 00:25:29,000 --> 00:25:32,000 Lide a se olye pou yo kòmanse depi nan konmansman an ak kopye nan fason sa a 348 00:25:32,000 --> 00:25:35,000 tankou nou jis te fè isit la, li kòmanse soti nan fen a ak kopi nan, 349 00:25:35,000 --> 00:25:38,000 ak nan ka sa a, ou pa janm ka gen yon pwoblèm. 350 00:25:38,000 --> 00:25:40,000 Pa gen okenn pèfòmans pèdi. 351 00:25:40,000 --> 00:25:47,000 Toujou itilize memmove. Pa janm enkyete sou memcopy. 352 00:25:47,000 --> 00:25:51,000 Epi sa a, kote w ap ale nan gen separeman memmove 353 00:25:51,000 --> 00:26:01,000 pòsyon nan vlope-otou nan nat ou a. 354 00:26:01,000 --> 00:26:04,000 Pa gen enkyetid si se pa konplètman fè. 355 00:26:04,000 --> 00:26:10,000 Sa a se pi difisil pase chemine, pouse, pòp ak. 356 00:26:10,000 --> 00:26:15,000 >> Nenpòt moun ki gen nenpòt kòd nou te ka travay avèk? 357 00:26:15,000 --> 00:26:21,000 Menm si konplètman enkonplè? 358 00:26:21,000 --> 00:26:23,000 [Elèv] Yeah, li nan konplètman enkonplè, menm si. 359 00:26:23,000 --> 00:26:27,000 Konplètman enkonplè se amann osi lontan ke nou-ou ka sove revizyon an? 360 00:26:27,000 --> 00:26:32,000 Mwen bliye ke chak fwa sèl. 361 00:26:32,000 --> 00:26:39,000 Okay, inyore sa ki pase lè nou bezwen Rdimansyone bagay sa yo. 362 00:26:39,000 --> 00:26:42,000 Konplètman inyore rdimansyonman. 363 00:26:42,000 --> 00:26:49,000 Eksplike sa a kòd. 364 00:26:49,000 --> 00:26:54,000 Mwen tcheke premye nan tout si gwosè a se mwens pase kopi an premye nan tout 365 00:26:54,000 --> 00:27:01,000 ak Lè sa a, apre sa, mwen insert-Mwen pran tèt + gwosè, 366 00:27:01,000 --> 00:27:05,000 epi mwen asire w ke li vlope toutotou kapasite a nan etalaj la, 367 00:27:05,000 --> 00:27:08,000 epi mwen insert fisèl la nouvo nan pozisyon sa. 368 00:27:08,000 --> 00:27:12,000 Apre sa, mwen ogmante gwosè a epi retounen vre. 369 00:27:12,000 --> 00:27:22,000 >> [Rob B.] Sa a se definitivman youn nan ka sa yo kote w ap ale nan vle yo lè l sèvi avèk Mod. 370 00:27:22,000 --> 00:27:25,000 Nenpòt ki kalite ka kote ou te vlope toutotou, si ou panse vlope alantou li, 371 00:27:25,000 --> 00:27:29,000 te panse a imedya yo ta dwe Mod. 372 00:27:29,000 --> 00:27:36,000 Kòm yon Optimization rapid / fè kòd ou a yon liy ki pi kout, 373 00:27:36,000 --> 00:27:42,000 ou remake ke liy lan imedyatman apre yon sèl sa a 374 00:27:42,000 --> 00:27:53,000 se jis gwosè + +, se konsa ou rantre nan trafik ki nan liy sa a, gwosè + +. 375 00:27:53,000 --> 00:27:58,000 Koulye a, desann isit la, nou gen ka a 376 00:27:58,000 --> 00:28:01,000 kote nou pa gen ase memwa, 377 00:28:01,000 --> 00:28:05,000 pou nou yo ap ogmante kapasite nou pa 2. 378 00:28:05,000 --> 00:28:09,000 Mwen devine ou ta ka genyen menm pwoblèm nan isit la, men nou ka inyore li kounye a, 379 00:28:09,000 --> 00:28:13,000 kote si ou echwe pou pou ogmante kapasite ou a, 380 00:28:13,000 --> 00:28:18,000 Lè sa a, w ap ale nan vle diminye kapasite ou pa 2 ankò. 381 00:28:18,000 --> 00:28:24,000 Yon lòt nòt kout se jis tankou ou ka fè + =, 382 00:28:24,000 --> 00:28:30,000 ou ka tou fè << =. 383 00:28:30,000 --> 00:28:43,000 Prèske anyen ka ale anvan egal, + =, | =, & =, << =. 384 00:28:43,000 --> 00:28:52,000 Char * nouvo se blòk nouvo nou an memwa. 385 00:28:52,000 --> 00:28:55,000 Oh, sou isit la. 386 00:28:55,000 --> 00:29:02,000 >> Ki sa ki moun panse sou kalite a nan blòk nou nouvo nan memwa? 387 00:29:02,000 --> 00:29:06,000 [Elèv] Li ta dwe ** Char. 388 00:29:06,000 --> 00:29:12,000 Panse tounen nan struct nou moute isit la, 389 00:29:12,000 --> 00:29:14,000 strings se sa nou ap reatribue. 390 00:29:14,000 --> 00:29:21,000 N ap fè yon tout nouvo depo dinamik pou eleman yo nan nat la. 391 00:29:21,000 --> 00:29:25,000 Ki sa nou ap pral plase strings ou a se sa n ap mallocing kounye a, 392 00:29:25,000 --> 00:29:30,000 ak sa nouvo a pwal yon ** Char. 393 00:29:30,000 --> 00:29:34,000 Li nan pral fè yon etalaj de strings. 394 00:29:34,000 --> 00:29:38,000 Lè sa a, ki sa se ka a anba ki nou pwal retounen fo? 395 00:29:38,000 --> 00:29:41,000 [Elèv] Eske nou ta dwe ap fè a * Char? 396 00:29:41,000 --> 00:29:44,000 [Rob B.] Wi, bon apèl. 397 00:29:44,000 --> 00:29:46,000 [Elèv] Ki sa ki te sa? 398 00:29:46,000 --> 00:29:49,000 [Rob B.] Nou te vle fè yo piti yo gen * Char paske nou yo pa- 399 00:29:49,000 --> 00:29:53,000 sa a ta aktyèlman ap yon pwoblèm trè gwo paske sizof (Char) ta dwe 1. 400 00:29:53,000 --> 00:29:55,000 Sizof Char * a pwal 4, 401 00:29:55,000 --> 00:29:58,000 konsa yon anpil fwa lè w ap fè fas ak antye, 402 00:29:58,000 --> 00:30:01,000 ou gen tandans jwenn lwen ak li paske gwosè nan int ak gwosè * int 403 00:30:01,000 --> 00:30:04,000 sou yon sistèm 32-bit pwal gen menm bagay la. 404 00:30:04,000 --> 00:30:09,000 Men, isit la, sizof (Char) ak sizof (Char *) yo kounye a se pral fè menm bagay la. 405 00:30:09,000 --> 00:30:15,000 >> Ki sa ki sikonstans la kote nou retounen fo? 406 00:30:15,000 --> 00:30:17,000 [Elèv] New se nil. 407 00:30:17,000 --> 00:30:23,000 Yeah, si nouvo se nil, nou retounen fo, 408 00:30:23,000 --> 00:30:34,000 ak mwen pral voye jete desann isit la- 409 00:30:34,000 --> 00:30:37,000 [Elèv] [fèbl] 410 00:30:37,000 --> 00:30:39,000 [Rob B.] Yeah, sa a se amann. 411 00:30:39,000 --> 00:30:46,000 Ou te kapab swa fè 2 fwa kapasite oswa chanjman kapasite 1 ak Lè sa a, sèlman mete l 'desann isit la oswa kèlkeswa sa. 412 00:30:46,000 --> 00:30:52,000 Nou pral fè l 'kòm nou te gen li. 413 00:30:52,000 --> 00:30:56,000 Kapasite >> = 1. 414 00:30:56,000 --> 00:31:08,000 Epi ou pa janm ap ale nan gen enkyete sou pèdi plas 1 nan 415 00:31:08,000 --> 00:31:12,000 paske ou te kite deplase pa 1, se konsa kote 1 an se nesesèman yon 0, 416 00:31:12,000 --> 00:31:16,000 se konsa dwa déplacement pa 1, ou toujou ap pral fè amann. 417 00:31:16,000 --> 00:31:19,000 [Elèv] Eske w bezwen fè sa anvan retounen? 418 00:31:19,000 --> 00:31:29,000 [Rob B.] Wi, sa a fè absoliman pa gen sans. 419 00:31:29,000 --> 00:31:36,000 >> Koulye a, pran nou pral fini retounen vre nan fen an. 420 00:31:36,000 --> 00:31:39,000 Fason an ke nou ap pral fè sa yo memmoves, 421 00:31:39,000 --> 00:31:45,000 nou bezwen dwe fè atansyon ak jan nou fè yo. 422 00:31:45,000 --> 00:31:50,000 nenpòt moun ki gen nenpòt sijesyon pou jan nou fè yo? 423 00:32:17,000 --> 00:32:21,000 Isit la nan kòmansman nou an. 424 00:32:21,000 --> 00:32:28,000 Fatalman, nou vle kòmanse nan kòmansman an ankò 425 00:32:28,000 --> 00:32:35,000 ak kopi bagay sa yo nan de la, 1, 3, 4, 2. 426 00:32:35,000 --> 00:32:41,000 Ki jan ou fè sa? 427 00:32:41,000 --> 00:32:52,000 Premyèman, mwen te fè yon gade nan paj la nonm pou memmove ankò. 428 00:32:52,000 --> 00:32:57,000 Memmove, lòd nan agiman se toujou enpòtan. 429 00:32:57,000 --> 00:33:01,000 Nou vle destinasyon nou premye, dezyèm sous, twazyèm gwosè. 430 00:33:01,000 --> 00:33:06,000 Gen yon anpil nan fonksyon ki ranvèse sous ak destinasyon. 431 00:33:06,000 --> 00:33:11,000 Destinasyon, sous gen tandans ka yon ti jan ki konsistan. 432 00:33:17,000 --> 00:33:21,000 Deplase, ki sa ki li retounen? 433 00:33:21,000 --> 00:33:27,000 Li retounen yon konsèy nan destinasyon, pou kèlkeswa rezon ou ta ka vle sa. 434 00:33:27,000 --> 00:33:32,000 Mwen ka foto li li l ', men nou vle pou avanse pou pi nan destinasyon nou an. 435 00:33:32,000 --> 00:33:35,000 >> Ki sa ki destinasyon nou yo pral? 436 00:33:35,000 --> 00:33:37,000 [Elèv] New. 437 00:33:37,000 --> 00:33:39,000 [Rob B.] Wi, ak ki kote n ap kopye soti nan? 438 00:33:39,000 --> 00:33:43,000 Premye bagay nou ap kopye sa a 1, 3, 4. 439 00:33:43,000 --> 00:33:50,000 Ki sa ki se-sa-a 1 a, 3, 4. 440 00:33:50,000 --> 00:33:55,000 Ki sa ki se adrès sa a 1? 441 00:33:55,000 --> 00:33:58,000 Ki sa ki se adrès sa a nan 1? 442 00:33:58,000 --> 00:34:01,000 [Elèv] [fèbl] 443 00:34:01,000 --> 00:34:03,000 [Rob B.] Head + adrès ki nan eleman la an premye. 444 00:34:03,000 --> 00:34:05,000 Ki jan nou jwenn eleman nan premye nan etalaj la? 445 00:34:05,000 --> 00:34:10,000 [Elèv] keu. 446 00:34:10,000 --> 00:34:15,000 [Rob B.] Wi, q.strings. 447 00:34:15,000 --> 00:34:20,000 Sonje byen, isit la, tèt nou an, se 1. 448 00:34:20,000 --> 00:34:24,000 Reprize li. Mwen te jis panse li an maji- 449 00:34:24,000 --> 00:34:29,000 Isit la, tèt nou an, se 1. Mwen pral chanje koulè mwen tou. 450 00:34:29,000 --> 00:34:36,000 Ak isit la se strings. 451 00:34:36,000 --> 00:34:41,000 Sa a, nou ka swa ekri li tankou nou te fè sou isit la 452 00:34:41,000 --> 00:34:43,000 ak chèf + q.strings. 453 00:34:43,000 --> 00:34:51,000 Yon anpil moun tou ekri li & q.strings [tèt]. 454 00:34:51,000 --> 00:34:55,000 Sa a se pa reyèlman nenpòt ki mwens efikas. 455 00:34:55,000 --> 00:34:58,000 Ou ta ka panse a li kòm w ap dereferencing li epi li Lè sa a, ap resevwa adrès la nan, 456 00:34:58,000 --> 00:35:04,000 men du a pral tradui li nan sa nou te genyen anvan de tout fason, q.strings + tèt. 457 00:35:04,000 --> 00:35:06,000 Nenpòt fason ou vle panse a li. 458 00:35:06,000 --> 00:35:11,000 >> Ak konbyen bytes nou vle yon kopi? 459 00:35:11,000 --> 00:35:15,000 [Elèv] Kapasite - tèt. 460 00:35:15,000 --> 00:35:18,000 Kapasite - tèt. 461 00:35:18,000 --> 00:35:21,000 Lè sa a, ou ta ka toujou ekri yon egzanp 462 00:35:21,000 --> 00:35:23,000 Pou detèminen si sa a, se dwa. 463 00:35:23,000 --> 00:35:26,000 [Elèv] Li bezwen divize pa 2 Lè sa a,. 464 00:35:26,000 --> 00:35:30,000 Yeah, se konsa mwen devine nou te ka sèvi ak gwosè yo. 465 00:35:30,000 --> 00:35:35,000 Nou toujou gen gwosè yo te- 466 00:35:35,000 --> 00:35:39,000 lè l sèvi avèk gwosè, nou gen gwosè egal a 4. 467 00:35:39,000 --> 00:35:42,000 Gwosè nou an se 4. Tèt nou se 1. 468 00:35:42,000 --> 00:35:46,000 Nou vle yon kopi eleman sa yo 3. 469 00:35:46,000 --> 00:35:54,000 Sa a saniti nan tcheke ki gwosè - tèt se kòrèkteman 3. 470 00:35:54,000 --> 00:35:58,000 Ak ap vini tounen isit la, tankou nou te di anvan, 471 00:35:58,000 --> 00:36:00,000 si nou itilize kapasite, Lè sa a, nou ta gen divize pa 2 472 00:36:00,000 --> 00:36:04,000 paske nou te deja grandi kapasite nou an, Se konsa, olye, nou pwal sèvi ak gwosè yo. 473 00:36:11,000 --> 00:36:13,000 Ke tout kopi ki pòsyon. 474 00:36:13,000 --> 00:36:18,000 Koulye a, nou bezwen yon kopi pòsyon nan lòt, pòsyon sa a, ki rete nan kòmansman an. 475 00:36:18,000 --> 00:36:28,000 >> Sa a pral memmove nan ki pozisyon? 476 00:36:28,000 --> 00:36:32,000 [Elèv] Plus gwosè - tèt. 477 00:36:32,000 --> 00:36:38,000 Wi, se konsa nou te deja kopye nan gwosè - bytes tèt, 478 00:36:38,000 --> 00:36:43,000 ak Se konsa, kote nou vle a kapab bay kopi bytes yo rete a se nouvo 479 00:36:43,000 --> 00:36:48,000 ak Lè sa a, gwosè mwens-byen, ki kantite bytes nou te deja kopye pous 480 00:36:48,000 --> 00:36:52,000 Lè sa a, kote n ap kopye soti nan? 481 00:36:52,000 --> 00:36:54,000 [Elèv] Q.strings [0]. 482 00:36:54,000 --> 00:36:56,000 [Rob B.] Wi, q.strings. 483 00:36:56,000 --> 00:37:02,000 Nou te ka swa fè & q.strings [0]. 484 00:37:02,000 --> 00:37:05,000 Sa a se siyifikativman mwens komen pase sa. 485 00:37:05,000 --> 00:37:14,000 Si li jis pral fè 0, Lè sa a, ou pral yo gen tandans wè q.strings. 486 00:37:14,000 --> 00:37:16,000 Sa a kote nou ap kopye soti nan. 487 00:37:16,000 --> 00:37:18,000 Konbyen bytes nou kite a kapab bay kopi? >> [Elèv] 10. 488 00:37:18,000 --> 00:37:20,000 Dwat. 489 00:37:20,000 --> 00:37:25,000 [Elèv] nou dwe anpil anpil pitit 5 - 10 fwa gwosè a nan bytes yo oswa yon bagay? 490 00:37:25,000 --> 00:37:30,000 Yeah, se konsa sa a se kote-ki sa egzakteman yo nou kopye? 491 00:37:30,000 --> 00:37:32,000 [Elèv] [fèbl] 492 00:37:32,000 --> 00:37:34,000 Ki sa ki se ki kalite bagay nan nou ap kopye? 493 00:37:34,000 --> 00:37:36,000 [Elèv] [fèbl] 494 00:37:36,000 --> 00:37:41,000 Yeah, se konsa yo nan Char * ke nou ap kopye, nou pa konnen ki kote sa yo ap vini soti nan. 495 00:37:41,000 --> 00:37:47,000 Oke, kote yo ap lonje dwèt a, tankou strings yo, nou fini pouse l 'sou nat la 496 00:37:47,000 --> 00:37:49,000 oswa enqueuing sou nat la. 497 00:37:49,000 --> 00:37:51,000 Ki kote sa yo ap vini soti nan, nou pa gen okenn lide. 498 00:37:51,000 --> 00:37:56,000 Nou jis bezwen kenbe tras nan yo nan * Char tèt yo. 499 00:37:56,000 --> 00:38:00,000 Nou pa vle a kapab bay kopi gwosè - bytes nan tèt yo. 500 00:38:00,000 --> 00:38:03,000 Nou vle yon kopi gwosè - tèt yo * Char, 501 00:38:03,000 --> 00:38:11,000 pou nou ap ale nan anpil anpil pitit sa a pa sizof (Char *). 502 00:38:11,000 --> 00:38:17,000 Menm desann isit la, tèt * sizof (Char *). 503 00:38:17,000 --> 00:38:24,000 >> [Elèv] Ki sa ki sou [fèbl]? 504 00:38:24,000 --> 00:38:26,000 Dwa sa-a isit la? 505 00:38:26,000 --> 00:38:28,000 [Elèv] Non, pi ba a sa, gwosè a - tèt. 506 00:38:28,000 --> 00:38:30,000 [Rob B.] Dwa sa a isit la? 507 00:38:30,000 --> 00:38:32,000 Aritmetik pwente. 508 00:38:32,000 --> 00:38:35,000 Ki jan aritmetik konsèy ki pral travay se 509 00:38:35,000 --> 00:38:40,000 li otomatikman miltipliye pa gwosè a nan kalite a ke nou ap fè fas ak. 510 00:38:40,000 --> 00:38:46,000 Jis tankou sou isit la, nouvo + (gwosè - tèt) 511 00:38:46,000 --> 00:38:56,000 se egzakteman ekivalan a & [gwosè - tèt] nouvo 512 00:38:56,000 --> 00:39:00,000 jiskaske nou espere ke nan travay yo kòrèkteman, 513 00:39:00,000 --> 00:39:04,000 depi si nou ap fè fas ak yon etalaj Int, lè sa a nou pa fè sa endèks pa int- 514 00:39:04,000 --> 00:39:07,000 oswa si li nan nan gwosè nan 5, epi ou vle eleman nan 4yèm, Lè sa a, nou endèks nan la 515 00:39:07,000 --> 00:39:10,000 int etalaj [4]. 516 00:39:10,000 --> 00:39:14,000 Ou don't-[4] * gwosè nan int. 517 00:39:14,000 --> 00:39:21,000 Ki pwaye li otomatikman, ak ka sa a 518 00:39:21,000 --> 00:39:29,000 se literalman ekivalan, se konsa bracket sentaks la 519 00:39:29,000 --> 00:39:34,000 se jis yo pral konvèti an sa a kòm pli vit ke ou konpile. 520 00:39:34,000 --> 00:39:38,000 Sa se yon bagay ou bezwen dwe fè atansyon nan ki 521 00:39:38,000 --> 00:39:42,000 lè w ap ajoute gwosè - tèt 522 00:39:42,000 --> 00:39:45,000 w ap ajoute pa gen yon sèl multiple. 523 00:39:45,000 --> 00:39:53,000 W ap ajoute yon Char *, sa ki ka fè yon sèl bytes oswa kèlkeswa sa. 524 00:39:53,000 --> 00:39:56,000 >> Lòt kesyon yo? 525 00:39:56,000 --> 00:40:04,000 Okay, dequeue a pwal pi fasil. 526 00:40:04,000 --> 00:40:11,000 Mwen pral ba w yon minit a aplike. 527 00:40:11,000 --> 00:40:18,000 Oh, ak mwen devine sa a se sitiyasyon an menm kote 528 00:40:18,000 --> 00:40:21,000 sa ki ka a enqueue, si nou ap enqueuing nil, 529 00:40:21,000 --> 00:40:24,000 petèt nou vle manch li yo, petèt nou pa fè sa. 530 00:40:24,000 --> 00:40:27,000 Nou pa pral fè l 'ankò isit la, men menm jan ak ka chemine nou an. 531 00:40:27,000 --> 00:40:34,000 Si nou enqueue nil, nou ta ka vle respekte l '. 532 00:40:34,000 --> 00:40:40,000 Nenpòt moun ki gen kèk kòd mwen ka rale moute? 533 00:40:40,000 --> 00:40:45,000 [Elèv] Mwen te jis gen dequeue. 534 00:40:45,000 --> 00:40:56,000 Haitian Creole 2 se ke-oke. 535 00:40:56,000 --> 00:40:59,000 Ou vle eksplike? 536 00:40:59,000 --> 00:41:01,000 [Elèv] Premyèman, ou asire ou ke gen nan yon bagay nan nat la 537 00:41:01,000 --> 00:41:07,000 ak ki gwosè a pral desann nan 1. 538 00:41:07,000 --> 00:41:11,000 Ou bezwen fè sa, ak Lè sa a, ou retounen tèt la 539 00:41:11,000 --> 00:41:13,000 ak lè sa a deplase tèt la moute 1. 540 00:41:13,000 --> 00:41:19,000 Oke, kidonk gen yon ka kwen nou gen nan konsidere. Yeah. 541 00:41:19,000 --> 00:41:24,000 [Elèv] Si tèt ou se nan eleman ki sot pase yo, 542 00:41:24,000 --> 00:41:26,000 Lè sa a, ou pa vle tèt nan pwen deyò nan etalaj la. 543 00:41:26,000 --> 00:41:29,000 >> Yeah, se konsa le pli vit ke tèt frape nan fen etalaj nou an, 544 00:41:29,000 --> 00:41:35,000 lè nou dequeue, yo ta dwe tèt nou dwe modded tounen nan 0. 545 00:41:35,000 --> 00:41:40,000 Malerezman, nou pa ka fè sa nan yon sèl etap. 546 00:41:40,000 --> 00:41:44,000 Mwen devine wout la mwen ta pwobableman fikse li se 547 00:41:44,000 --> 00:41:52,000 sa a se pral gen yon * Char, sa n ap retounen, 548 00:41:52,000 --> 00:41:55,000 kèlkeswa sa non varyab ou a vle yo dwe. 549 00:41:55,000 --> 00:42:02,000 Lè sa a, nou vle Mod tèt pa nou kapasite 550 00:42:02,000 --> 00:42:10,000 ak Lè sa a, retounen re. 551 00:42:10,000 --> 00:42:14,000 Yon anpil moun isit la, yo ta ka fè- 552 00:42:14,000 --> 00:42:19,000 sa a se ka a nan-you'll wè moun fè si tèt 553 00:42:19,000 --> 00:42:29,000 se pi gran pase kapasite, fè tèt - kapasite. 554 00:42:29,000 --> 00:42:36,000 E se te jis ap travay nan ki sa Mod se. 555 00:42:36,000 --> 00:42:41,000 Head Mod = kapasite se pi cleaner 556 00:42:41,000 --> 00:42:51,000 nan yon kachte alantou pase si tèt pi gran pase tèt kapasite - kapasite. 557 00:42:51,000 --> 00:42:56,000 >> Kesyon? 558 00:42:56,000 --> 00:43:02,000 Okay, bagay la pase nou kite se lis lye nou an. 559 00:43:02,000 --> 00:43:07,000 Ou ta ka dwe itilize a kèk nan konpòtman an lis lye si ou te fè 560 00:43:07,000 --> 00:43:11,000 lye lis nan tab regle ou, si ou te fè yon tab regle. 561 00:43:11,000 --> 00:43:15,000 Mwen rekòmande fè yon tab regle. 562 00:43:15,000 --> 00:43:17,000 Ou ta ka te deja fè yon trye, 563 00:43:17,000 --> 00:43:23,000 men ap eseye yo pi difisil. 564 00:43:23,000 --> 00:43:27,000 Nan teyori, yo ap asenptotik pi byen. 565 00:43:27,000 --> 00:43:30,000 Men, jis gade nan tablo a gwo, 566 00:43:30,000 --> 00:43:35,000 epi eseye pa janm fè pi byen, epi yo pran plis memwa. 567 00:43:35,000 --> 00:43:43,000 Tout bagay sou ap eseye fini moute ke yo te vin pi mal pou plis travay. 568 00:43:43,000 --> 00:43:49,000 Li nan sa ki solisyon David Malan a toujou se 569 00:43:49,000 --> 00:43:56,000 se li toujou posts solisyon trye l ', li kite nan wè kote l' kounye a se. 570 00:43:56,000 --> 00:44:00,000 Ki sa ki te li anba, David J? 571 00:44:00,000 --> 00:44:06,000 Li nan # 18, ki fè sa a pa fò anpil move, 572 00:44:06,000 --> 00:44:09,000 e ke k ap pase yo dwe youn nan pi bon an ap eseye ou ka panse a 573 00:44:09,000 --> 00:44:17,000 oswa yon sèl nan pi bon an ap eseye nan yon trye. 574 00:44:17,000 --> 00:44:23,000 Eske se pa menm solisyon orijinal l '? 575 00:44:23,000 --> 00:44:29,000 Mwen santi mwen tankou trye solisyon yo gen tandans yo dwe plis nan sa a ranje nan itilizasyon RAM. 576 00:44:29,000 --> 00:44:33,000 >> Desann nan tèt la anpil, ak RAM l 'se nan chif yo sèl. 577 00:44:33,000 --> 00:44:36,000 Desann nan direksyon pou anba a, ak Lè sa a, ou kòmanse wè ap eseye 578 00:44:36,000 --> 00:44:41,000 kote ou jwenn l 'absoliman masiv RAM, 579 00:44:41,000 --> 00:44:45,000 ak ap eseye yo pi difisil. 580 00:44:45,000 --> 00:44:53,000 Pa totalman vo li men yon eksperyans edikatif si ou fè yon sèl. 581 00:44:53,000 --> 00:44:56,000 Bagay la pase a se lis lye nou an, 582 00:44:56,000 --> 00:45:04,000 ak sa yo twa bagay sa yo, pil, ke moun kap kriye, e li bay lis lye, 583 00:45:04,000 --> 00:45:09,000 nenpòt bagay nan lavni ou te janm fè nan syans konpitè 584 00:45:09,000 --> 00:45:12,000 pral asime ou gen abitye avèk bagay sa yo. 585 00:45:12,000 --> 00:45:19,000 Yo se jis pou fondamantal nan tout bagay. 586 00:45:19,000 --> 00:45:25,000 >> Linked lis, ak isit la nou te yon lis separeman lye a pwal aplikasyon nou an. 587 00:45:25,000 --> 00:45:34,000 Ki sa ki separeman lye vle di kòm opoze a doubl lye? Wi. 588 00:45:34,000 --> 00:45:37,000 [Elèv] Li sèlman pwen konsèy nan pwochen olye ke pwent yo, 589 00:45:37,000 --> 00:45:39,000 tankou yonn la ki vin anvan li ak yon la apre li. 590 00:45:39,000 --> 00:45:44,000 Yeah, se konsa nan fòma foto, ki sa ki t 'mwen jis fè? 591 00:45:44,000 --> 00:45:48,000 Mwen gen de bagay sa yo. Mwen gen imaj ak foto. 592 00:45:48,000 --> 00:45:51,000 Nan fòma foto, separeman nou lye lis, 593 00:45:51,000 --> 00:45:57,000 inevitableman, nou gen kèk kalite konsèy nan tèt la nan lis nou an, 594 00:45:57,000 --> 00:46:02,000 ak Lè sa a, nan lis nou an, nou jis gen endikasyon, 595 00:46:02,000 --> 00:46:05,000 e petèt sa a pwen nil. 596 00:46:05,000 --> 00:46:08,000 Li nan pral fè desen tipik ou nan yon lis separeman lye. 597 00:46:08,000 --> 00:46:14,000 Yon lis doubl lye, ou ka ale bak. 598 00:46:14,000 --> 00:46:19,000 Si m 'ba ou nenpòt ki ne nan lis la, lè sa a ou ka nesesèman jwenn yo 599 00:46:19,000 --> 00:46:23,000 nenpòt ki ne lòt nan lis la si li se yon lis doubl lye. 600 00:46:23,000 --> 00:46:27,000 Men, si mwen fè ou jwenn ne nan twazyèm nan lis la ak li nan yon lis separeman lye, 601 00:46:27,000 --> 00:46:30,000 okenn fason w ap janm ale pou li ale nan nœuds yo premye ak dezyèm. 602 00:46:30,000 --> 00:46:34,000 Ak gen nan benefis yo ak enkonvenyans, ak yon yon sèl evidan 603 00:46:34,000 --> 00:46:42,000 nou menm ki va pran plis gwosè, epi ou gen nan kenbe tras nan kote bagay sa yo montre kounye a. 604 00:46:42,000 --> 00:46:49,000 Men, nou sèlman pran swen sou separeman lye. 605 00:46:49,000 --> 00:46:53,000 >> Yon bagay kèk nou ap pral fè yo aplike. 606 00:46:53,000 --> 00:47:00,000 Tipedèf ne struct ou a, int mwen: struct ne * pwochen; ne. 607 00:47:00,000 --> 00:47:09,000 Sa tipedèf yo ta dwe boule nan lespri ou. 608 00:47:09,000 --> 00:47:14,000 Kwiz 1 yo ta dwe renmen bay yon tipedèf nan yon ne lis lye, 609 00:47:14,000 --> 00:47:18,000 epi ou ta dwe kapab imedyatman madjigridji ki desann 610 00:47:18,000 --> 00:47:22,000 san yo pa menm panse a li. 611 00:47:22,000 --> 00:47:27,000 Mwen devine yon kesyon koup, poukisa nou bezwen struct isit la? 612 00:47:27,000 --> 00:47:32,000 Poukisa pa kapab nou di ne *? 613 00:47:32,000 --> 00:47:35,000 [Elèv] [fèbl] 614 00:47:35,000 --> 00:47:38,000 Yeah. 615 00:47:38,000 --> 00:47:44,000 Bagay la sèlman ki defini yon ne kòm yon bagay 616 00:47:44,000 --> 00:47:47,000 se tipedèf nan tèt li. 617 00:47:47,000 --> 00:47:55,000 Men, kòm nan pwen sa a, lè nou ap kalite analyse nan definisyon sa a ne struct, 618 00:47:55,000 --> 00:48:01,000 nou pa fini tipedèf nou ankò, pou depi tipedèf a pa t 'fini, 619 00:48:01,000 --> 00:48:05,000 ne pa egziste. 620 00:48:05,000 --> 00:48:12,000 Men, struct ne fè, ak sa a ne nan isit la, 621 00:48:12,000 --> 00:48:14,000 sa a ta ka tou rele nenpòt lòt bagay. 622 00:48:14,000 --> 00:48:16,000 Sa a te ka rele n. 623 00:48:16,000 --> 00:48:19,000 Li ta ka rele lye ne lis la. 624 00:48:19,000 --> 00:48:21,000 Li ta ka rele anyen. 625 00:48:21,000 --> 00:48:26,000 Men, sa a ne struct bezwen yo dwe rele menm bagay la tankou sa a ne struct. 626 00:48:26,000 --> 00:48:29,000 Ki sa ou rele sa a gen yo tou pou isit la, 627 00:48:29,000 --> 00:48:32,000 Pou fè sa ki tou reponn pwen an dezyèm nan kesyon an 628 00:48:32,000 --> 00:48:37,000 ki se poukisa-yon anpil fwa lè ou wè strukt ak typedefs nan strukt, 629 00:48:37,000 --> 00:48:42,000 ou pral wè strukt anonim kote w ap jis wè tipedèf struct, 630 00:48:42,000 --> 00:48:47,000 egzekisyon diksyonè struct,, oswa kèlkeswa sa. 631 00:48:47,000 --> 00:48:51,000 >> Poukisa isit la nou bezwen di ne? 632 00:48:51,000 --> 00:48:54,000 Poukisa nou pa ka li dwe yon struct anonim? 633 00:48:54,000 --> 00:48:56,000 Li nan prèske menm repons la. 634 00:48:56,000 --> 00:48:58,000 [Elèv] Ou bezwen pou fè referans a li nan struct la. 635 00:48:58,000 --> 00:49:04,000 Yeah, nan struct a, ou bezwen gade nan struct nan tèt li. 636 00:49:04,000 --> 00:49:10,000 Si ou pa bay struct a yon non, si li nan yon struct anonim, ou pa ka al gade nan li. 637 00:49:10,000 --> 00:49:17,000 Ak dènye men pa piti-sa yo dwe tout ap yon ti jan dwat, 638 00:49:17,000 --> 00:49:20,000 epi yo ta dwe ede w reyalize, si w ap ekri sa a desann 639 00:49:20,000 --> 00:49:24,000 ke w ap fè yon bagay mal, si sa yo kalite bagay sa yo pa fè sans. 640 00:49:24,000 --> 00:49:28,000 Dènye, men pa pi piti, poukisa sa a gen yo dwe struct * ne? 641 00:49:28,000 --> 00:49:34,000 Poukisa nou pa ka li jis ap struct ne vin apre a? 642 00:49:34,000 --> 00:49:37,000 [Elèv] pwente struct kap vini an. 643 00:49:37,000 --> 00:49:39,000 Sa a inevitableman ki sa nou vle. 644 00:49:39,000 --> 00:49:42,000 Poukisa t 'kapab li pa janm vin yon ne struct vin apre a? 645 00:49:42,000 --> 00:49:50,000 Poukisa pou l 'gen yo dwe struct ne * vin apre a? Yeah. 646 00:49:50,000 --> 00:49:53,000 [Elèv] Se tankou yon riban enfini. 647 00:49:53,000 --> 00:49:55,000 Yeah. 648 00:49:55,000 --> 00:49:57,000 [Elèv] Li ta tout ap nan yon sèl. 649 00:49:57,000 --> 00:50:02,000 Yeah, jis panse a ki jan nou ta fè gwosè a oswa yon bagay. 650 00:50:02,000 --> 00:50:08,000 Kantite moun ki nan yon struct se fondamantalman + oswa - kèk modèl isit la oswa si gen. 651 00:50:08,000 --> 00:50:15,000 Li nan fondamantalman pral fè sòm total la nan gwosè yo nan bagay ki nan struct la. 652 00:50:15,000 --> 00:50:18,000 Dwa sa-a isit la, san li pa chanje anyen, gwosè a a pwal fasil. 653 00:50:18,000 --> 00:50:24,000 Kantite moun ki nan ne struct a pwal gwosè nan mwen gwosè + nan pwochen. 654 00:50:24,000 --> 00:50:27,000 Kantite moun ki nan mwen a pwal 4. Kantite moun ki nan pwochen a pwal 4. 655 00:50:27,000 --> 00:50:30,000 Kantite moun ki nan ne struct a pwal 8. 656 00:50:30,000 --> 00:50:34,000 Si nou pa gen * a, panse a sizof, 657 00:50:34,000 --> 00:50:37,000 Lè sa a, sizof (mwen) a pwal 4. 658 00:50:37,000 --> 00:50:43,000 Kantite moun ki nan ne struct pwochen a pwal gwosè nan mwen + gwosè nan ne struct pwochen 659 00:50:43,000 --> 00:50:46,000 + Gwosè nan mwen gwosè + nan ne struct kap vini an. 660 00:50:46,000 --> 00:50:55,000 Li ta yon rkursyon enfini nan nœuds. 661 00:50:55,000 --> 00:51:00,000 Sa a se poukisa sa a se ki jan bagay yo dwe fè. 662 00:51:00,000 --> 00:51:03,000 >> Yon fwa ankò, definitivman memorize sa, 663 00:51:03,000 --> 00:51:06,000 oswa omwen konprann li ase ke ou ka kapab 664 00:51:06,000 --> 00:51:12,000 rezon ki fè nan sa li ta dwe sanble. 665 00:51:12,000 --> 00:51:14,000 Bagay sa yo nou ap ale nan vle aplike. 666 00:51:14,000 --> 00:51:18,000 Si longè nan lis la- 667 00:51:18,000 --> 00:51:21,000 ou ta ka tronpe epi kenbe otou yon 668 00:51:21,000 --> 00:51:24,000 mondyal longè oubyen yon bagay, men nou pa ap ale nan fè sa. 669 00:51:24,000 --> 00:51:28,000 Nou pral konte longè nan lis la. 670 00:51:28,000 --> 00:51:34,000 Nou te gen, se konsa sa a, se fondamantalman tankou yon rechèch, 671 00:51:34,000 --> 00:51:41,000 pou nou gen yon lis lye nan nonm antye relatif yo wè si sa a se nonb antye relatif nan lis la lye. 672 00:51:41,000 --> 00:51:44,000 Prepan ki pral insert nan kòmansman an nan lis la. 673 00:51:44,000 --> 00:51:46,000 Tache ki pral insert nan fen an. 674 00:51:46,000 --> 00:51:53,000 Insert_sorted ki pral insert nan pozisyon an Ranje nan lis la. 675 00:51:53,000 --> 00:52:01,000 Kalite Insert_sorted nan sipoze ke ou pa janm te itilize prepan oswa tache nan fason move. 676 00:52:01,000 --> 00:52:09,000 >> Insert_sorted lè w ap aplike insert_sorted- 677 00:52:09,000 --> 00:52:13,000 Se pou nou di nou gen lis lye nou an. 678 00:52:13,000 --> 00:52:18,000 Sa a se ki sa li kounye a sanble, 2, 4, 5. 679 00:52:18,000 --> 00:52:24,000 Mwen vle insert 3, kifè, osi lontan ke se lis la tèt li deja klase, 680 00:52:24,000 --> 00:52:27,000 li fasil jwenn kote 3 ki dwe. 681 00:52:27,000 --> 00:52:29,000 Mwen kòmanse nan 2. 682 00:52:29,000 --> 00:52:32,000 Okay, 3 pi gran pase 2, Se konsa, mwen vle kenbe prale. 683 00:52:32,000 --> 00:52:35,000 Oh, 4 se twò gwo, se konsa mwen konnen 3 ki pral ale nan ant 2 ak 4, 684 00:52:35,000 --> 00:52:39,000 e mwen gen ranje endikasyon ak tout bagay sa. 685 00:52:39,000 --> 00:52:43,000 Men, si nou pa t 'estrikteman itilize insert_sorted, 686 00:52:43,000 --> 00:52:50,000 renmen kite yo jis di mwen prepan 6, 687 00:52:50,000 --> 00:52:55,000 Lè sa a, lis lye mwen ki pral vin tounen sa a. 688 00:52:55,000 --> 00:53:01,000 Li kounye a pa fè okenn sans, se konsa pou insert_sorted, ou ka jis asime 689 00:53:01,000 --> 00:53:04,000 ki se lis la Ranje, menm si operasyon egziste 690 00:53:04,000 --> 00:53:09,000 ki kapab lakòz li pa t 'dwe klase, ak sa a, se li. 691 00:53:09,000 --> 00:53:20,000 Jwenn yon itil insert-konsa sa yo se bagay sa yo prensipal w ap ale nan gen a aplike. 692 00:53:20,000 --> 00:53:24,000 >> Pou kounye a, pran yon minit yo fè longè epi li gen, 693 00:53:24,000 --> 00:53:30,000 ak sa yo ki ta dwe relativman rapid. 694 00:53:41,000 --> 00:53:48,000 Apochan tan fèmen, se konsa nenpòt moun ki gen anyen pou longè oswa gen? 695 00:53:48,000 --> 00:53:50,000 Yo pwal santi yo gen prèske idantik. 696 00:53:50,000 --> 00:53:57,000 [Elèv] Length. 697 00:53:57,000 --> 00:54:01,000 Ann gade pou wè, revizyon. 698 00:54:01,000 --> 00:54:04,000 Oke. 699 00:54:12,000 --> 00:54:15,000 Ou vle eksplike? 700 00:54:15,000 --> 00:54:21,000 [Elèv] Mwen te jis kreye yon ne konsèy ak inisyalize li nan premye, ki se varyab mondyal nou an, 701 00:54:21,000 --> 00:54:27,000 ak Lè sa a, mwen tcheke wè si li nan nil Se konsa, mwen pa jwenn yon fay segman epi retounen 0 si se ka a. 702 00:54:27,000 --> 00:54:34,000 Sinon, mwen riban a, kenbe tras nan nan nonb antye relatif 703 00:54:34,000 --> 00:54:38,000 konbyen fwa mwen te jwenn aksè eleman nan pwochen nan lis la 704 00:54:38,000 --> 00:54:43,000 ak nan operasyon an kantite menm tou aksè a ki eleman reyèl, 705 00:54:43,000 --> 00:54:47,000 ak Lè sa a, mwen kontinyèlman fè chèk la yo wè si li nan nil, 706 00:54:47,000 --> 00:54:56,000 epi si li nan nil, lè sa a li echou ak jis retounen nimewo a nan eleman mwen te jwenn aksè. 707 00:54:56,000 --> 00:55:01,000 >> [Rob B.] nenpòt moun ki gen nenpòt kòmantè sou anyen? 708 00:55:01,000 --> 00:55:06,000 Sa a sanble amann ekzaktitid gen bon konprann. 709 00:55:06,000 --> 00:55:10,000 [Elèv] Mwen pa panse ou bezwen ne a == nil. 710 00:55:10,000 --> 00:55:13,000 Yeah, kidonk si ne == nil 0 retou. 711 00:55:13,000 --> 00:55:18,000 Men, si ne == nil Lè sa a, sa a-oh, gen yon pwoblèm ekzaktitid. 712 00:55:18,000 --> 00:55:23,000 Li te jis w ap retounen mwen, men li pa nan dimansyon kounye a. 713 00:55:23,000 --> 00:55:30,000 Ou jis bezwen int mwen, se konsa mwen = 0. 714 00:55:30,000 --> 00:55:34,000 Men, si ne se nil, lè sa a mwen la toujou pral fè 0, 715 00:55:34,000 --> 00:55:39,000 e nou pral retounen 0, se konsa ka sa a se idantik. 716 00:55:39,000 --> 00:55:48,000 Yon lòt bagay ki komen se kenbe deklarasyon an 717 00:55:48,000 --> 00:55:51,000 nan andedan ne nan la pou riban. 718 00:55:51,000 --> 00:55:54,000 Ou kapab di-oh, pa gen okenn. 719 00:55:54,000 --> 00:55:56,000 Ann kenbe l tankou sa a. 720 00:55:56,000 --> 00:55:59,000 Mwen ta pwobableman mete int mwen = 0 isit la, 721 00:55:59,000 --> 00:56:05,000 Lè sa a, ne * ne = premye nan isit la. 722 00:56:05,000 --> 00:56:11,000 Ak sa a se pwobableman kouman-debarase tèt ou ak sa a kounye a. 723 00:56:11,000 --> 00:56:14,000 Sa a se pwobableman ki jan mwen ta ekri li. 724 00:56:14,000 --> 00:56:21,000 Ou kapab tou-gade li tankou sa a. 725 00:56:21,000 --> 00:56:25,000 Sa a pou estrikti riban dwa isit la 726 00:56:25,000 --> 00:56:30,000 yo ta dwe prèske kòm natirèl ak ou tankou pou int mwen 0 = 727 00:56:30,000 --> 00:56:33,000 mwen se mwens pase longè etalaj mwen + +. 728 00:56:33,000 --> 00:56:38,000 Si lè sa a jan ou repekte sou yon etalaj, sa a se ki jan ou repekte sou yon lis lye. 729 00:56:38,000 --> 00:56:45,000 >> Sa a ta dwe dezyèm nati nan kèk pwen. 730 00:56:45,000 --> 00:56:50,000 Avèk ki nan tèt, sa a se pral fè prèske menm bagay la. 731 00:56:50,000 --> 00:56:57,000 W ap ale nan vle repekte sou yon lis lye. 732 00:56:57,000 --> 00:57:02,000 Si ne-Mwen pa gen okenn lide ki sa ki valè a yo rele. La 733 00:57:02,000 --> 00:57:04,000 Ne mwen. 734 00:57:04,000 --> 00:57:15,000 Si valè a nan ne = mwen retounen vre, e ke se li. 735 00:57:15,000 --> 00:57:18,000 Remake wout la sèlman nou janm retounen fo 736 00:57:18,000 --> 00:57:23,000 se si nou repekte sou lis la tout antye lye epi pa janm retounen vre, 737 00:57:23,000 --> 00:57:29,000 pou ke nan ki sa sa a fè. 738 00:57:29,000 --> 00:57:36,000 Kòm yon bò nòt-nou pwobableman pa pral jwenn kole oswa prepan. 739 00:57:36,000 --> 00:57:39,000 >> Quick nòt dènye. 740 00:57:39,000 --> 00:57:52,000 Si ou wè mo kle a estatik, kidonk kite a di estatik int konte = 0, 741 00:57:52,000 --> 00:57:56,000 Lè sa a, nou fè konte + +, ou ka fondamantalman panse a li kòm yon varyab mondyal, 742 00:57:56,000 --> 00:58:00,000 menm si mwen jis di sa a se pa ki jan nou ap ale nan aplike longè. 743 00:58:00,000 --> 00:58:06,000 Mwen fè sa a isit la, ak Lè sa a, konte + +. 744 00:58:06,000 --> 00:58:11,000 Nenpòt fason nou ka antre nan yon ne nan lis lye nou an, nou yo ap incrementing konte nou an. 745 00:58:11,000 --> 00:58:15,000 Pwen nan sa a se sa mo kle a estatik vle di. 746 00:58:15,000 --> 00:58:20,000 Si mwen jis te gen int konte = 0 ki ta ka yon regilye fin vye granmoun varyab mondyal. 747 00:58:20,000 --> 00:58:25,000 Ki sa ki estatik vle di Int konte se ke li se yon varyab mondyal pou sa a dosye. 748 00:58:25,000 --> 00:58:28,000 Li enposib pou kèk dosye lòt, 749 00:58:28,000 --> 00:58:34,000 renmen panse a pset 5, si ou te kòmanse. 750 00:58:34,000 --> 00:58:39,000 Ou gen tou de speller.c, epi ou gen dictionary.c, 751 00:58:39,000 --> 00:58:42,000 ak si ou jis deklare yon bagay global, Lè sa a, anyen nan speller.c 752 00:58:42,000 --> 00:58:45,000 ou kapab jwenn aksè nan dictionary.c ak vis vèrsa. 753 00:58:45,000 --> 00:58:48,000 Varyab Global yo yo aksesib pa nenpòt. Dosye c, 754 00:58:48,000 --> 00:58:54,000 men varyab estatik yo, se sèlman aksesib soti nan nan dosye a poukont li, 755 00:58:54,000 --> 00:59:01,000 Se konsa andedan nan yon korektè oswa andedan nan dictionary.c, 756 00:59:01,000 --> 00:59:06,000 sa a se kalite ki jan mwen ta deklare varyab mwen an pou gwosè a nan etalaj mwen 757 00:59:06,000 --> 00:59:10,000 oswa gwosè a nan nimewo m 'lan nan mo nan diksyonè a. 758 00:59:10,000 --> 00:59:15,000 Depi mwen pa vle deklare yon varyab mondyal ke nenpòt moun ki gen aksè a, 759 00:59:15,000 --> 00:59:18,000 Mwen vrèman sèlman pran swen sou li pou rezon pwòp mwen. 760 00:59:18,000 --> 00:59:21,000 >> Bagay nan bon sou sa a tou se non bagay la antye kolizyon. 761 00:59:21,000 --> 00:59:27,000 Si kèk dosye lòt ap eseye sèvi ak yon varyab mondyal rele konte, bagay sa yo ale trè, trè sa ki mal, 762 00:59:27,000 --> 00:59:33,000 kidonk sa a joliman kenbe bagay sa yo san danje, epi sèlman ou kapab jwenn aksè nan li, 763 00:59:33,000 --> 00:59:38,000 ak pa gen yon lòt kapab, epi si yon lòt moun deklare yon varyab mondyal rele konte, 764 00:59:38,000 --> 00:59:43,000 Lè sa a, li pa pral entèfere ak varyab estatik ou rele konte. 765 00:59:43,000 --> 00:59:47,000 Sa a ki sa estatik se. Li se yon dosye varyab mondyal. 766 00:59:47,000 --> 00:59:52,000 >> Kesyon sou anyen? 767 00:59:52,000 --> 00:59:59,000 Tout ansanm. Bye. 768 00:59:59,000 --> 01:00:03,000 [CS50.TV]