1 00:00:00,000 --> 00:00:01,000 [Powered by Google Translate] [Artikulua 6] [More erosoa] 2 00:00:01,000 --> 00:00:04,000 [Rob Bowden] [Harvardeko Unibertsitateko] 3 00:00:04,000 --> 00:00:09,000 [Hau da CS50.] [CS50.TV] 4 00:00:09,000 --> 00:00:11,000 >> Gure galdera atala dugu. 5 00:00:11,000 --> 00:00:17,000 URL espazioa lehenago bidali dut. 6 00:00:17,000 --> 00:00:22,000 Galderen atalean hasieran esaten 7 00:00:22,000 --> 00:00:26,000 itxuraz ez naiz oso-osorik, oso erraza galdera bat unsick- 8 00:00:26,000 --> 00:00:28,000 zer da valgrind? 9 00:00:28,000 --> 00:00:30,000 Zer esan nahi du valgrind egin? 10 00:00:30,000 --> 00:00:34,000 Edonork zer valgrind du esan nahi? 11 00:00:34,000 --> 00:00:36,000 [Student] egiaztatzen memoria filtrazioak. 12 00:00:36,000 --> 00:00:41,000 Bai, valgrind memoria orokor bat checker da. 13 00:00:41,000 --> 00:00:44,000 Azken batean, kontatzen duzu memoria filtrazioen edozein bada, 14 00:00:44,000 --> 00:00:49,000 hau da, batez ere, zer erabiltzen ari gara delako nahi izanez gero 15 00:00:49,000 --> 00:00:54,000 egin eta arazoa multzoa edo nahi baduzu 16 00:00:54,000 --> 00:00:59,000 big-taula lortzeko, memoria filtrazioak ez dute inolako behar duzu, 17 00:00:59,000 --> 00:01:01,000 eta, kasu horretan, memoria leak ezin duzula aurkituko duzu, 18 00:01:01,000 --> 00:01:04,000 ere kontuan mantentzeko bakoitzean fitxategi bat irekitzeko 19 00:01:04,000 --> 00:01:07,000 eta itxi ez baldin baduzu, memoria-leak bat da. 20 00:01:07,000 --> 00:01:10,000 >> Jende asko ari dira nodo batzuk ez askatzeaz bila 21 00:01:10,000 --> 00:01:15,000 denean, benetan, ez dute itxi hiztegiaren lehen urratsa. 22 00:01:15,000 --> 00:01:19,000 Kontatzen du, baita ere, duzu baliogabea edozein bada irakurtzen edo idazten du, 23 00:01:19,000 --> 00:01:22,000 Horrek esan nahi du, saiatu eta balio bat ezarri 24 00:01:22,000 --> 00:01:26,000 zeure, amaieran haratago da, eta ez du seg matxura gertatuko 25 00:01:26,000 --> 00:01:30,000 baina valgrind harrapaketa, behar duzun bezala ez dira hor idazten, 26 00:01:30,000 --> 00:01:33,000 eta, beraz, behin betiko duzu ez duten edo edozein. 27 00:01:33,000 --> 00:01:38,000 Nola valgrind erabili duzu? 28 00:01:38,000 --> 00:01:42,000 Nola valgrind erabili duzu? 29 00:01:42,000 --> 00:01:45,000 >> Galdera orokor bat da 30 00:01:45,000 --> 00:01:49,000 mota exekutatu da eta irteera begiratu. 31 00:01:49,000 --> 00:01:51,000 Irteera asko aldiz erabatekoa da. 32 00:01:51,000 --> 00:01:54,000 Dago fun erroreak non duzu gauza batzuk izugarri oker bada ere 33 00:01:54,000 --> 00:01:59,000 begizta batean gertatzen da, gero, azkenean, izango da esatea, "Way errore gehiegi. 34 00:01:59,000 --> 00:02:03,000 Gaur egun kontatuta gelditu naiz. " 35 00:02:03,000 --> 00:02:08,000 Funtsean da textual irteera duzula analizatu. 36 00:02:08,000 --> 00:02:13,000 Azkenean, esan dizu memoria filtrazioen duzula, 37 00:02:13,000 --> 00:02:16,000 zenbat blokeak, baliagarria izan daiteke, zeren 38 00:02:16,000 --> 00:02:20,000 da bloke unfreed bada, orduan izan ohi da errazago aurkitu 39 00:02:20,000 --> 00:02:23,000 1.000 bloke baino unfreed. 40 00:02:23,000 --> 00:02:26,000 1.000 bloke unfreed ziurrenik ez duzu askatzeaz 41 00:02:26,000 --> 00:02:30,000 Zure lotuta zerrendak egokian edo zerbait. 42 00:02:30,000 --> 00:02:32,000 Hori Valgrind. 43 00:02:32,000 --> 00:02:35,000 >> Orain, gure galdera atala dugu, 44 00:02:35,000 --> 00:02:38,000 ez duzu behar deskargatzeko. 45 00:02:38,000 --> 00:02:41,000 Nire izenaren gainean klik egin dezakezu, eta horiek tira espazioa. 46 00:02:41,000 --> 00:02:44,000 Orain me klik egin. 47 00:02:44,000 --> 00:02:46,000 Berrikusketa, ordua: 1 pila izango da, lehenengo ari gara egiten. 48 00:02:46,000 --> 00:02:55,000 Berrikusketa, ordua: 2 ilara izango da, eta banaka lotuta zerrenda (r) en berrikusketa, ordua: 3 izango da. 49 00:02:55,000 --> 00:02:58,000 Hasierako gure pila. 50 00:02:58,000 --> 00:03:02,000 Dio hemen, pila bat oinarrizko bat da, 51 00:03:02,000 --> 00:03:07,000 oinarrizko datu informatikako egiturak. 52 00:03:07,000 --> 00:03:11,000 Oso adibide da prototypical 53 00:03:11,000 --> 00:03:13,000 jantokia erretiluak pila. 54 00:03:13,000 --> 00:03:16,000 Funtsean duzunean pila bat sartzen ari dira, 55 00:03:16,000 --> 00:03:20,000 norbait, esan du "Oh, erretiluak pila bat bezala." 56 00:03:20,000 --> 00:03:22,000 Erretiluak pilatu duzu. 57 00:03:22,000 --> 00:03:24,000 Ondoren, erretilu bat zabaltzen joan, 58 00:03:24,000 --> 00:03:31,000 pila jarri zen (a) ren erretiluan lehen lortzean bota. 59 00:03:31,000 --> 00:03:34,000 Hemen ere atsegin-pila dio 60 00:03:34,000 --> 00:03:37,000 pila izeneko memoria segmentu dugu. 61 00:03:37,000 --> 00:03:40,000 Eta zergatik pila deitzen da? 62 00:03:40,000 --> 00:03:42,000 >> Pila bat datuak egitura bezala delako, 63 00:03:42,000 --> 00:03:46,000 eta bultzada azalduko pila pila fotogramak, 64 00:03:46,000 --> 00:03:53,000 markoak non pila funtzio bat berariazko dei bat bezalakoak dira. 65 00:03:53,000 --> 00:03:57,000 Eta pila bat bezala, beti izango duzu itzuli 66 00:03:57,000 --> 00:04:03,000 funtzio-dei bat lortzen duzu aurretik pila beheko fotogramen berriro. 67 00:04:03,000 --> 00:04:08,000 Nagusiak dei foo dei bar eta taberna nagusira zuzenean itzuli ezin duzu. 68 00:04:08,000 --> 00:04:14,000 Beti lortu eta bultzaka leihoa zuzena pila jarraitu. 69 00:04:14,000 --> 00:04:18,000 Bi operazio, esan bezala I, push eta pop dira. 70 00:04:18,000 --> 00:04:20,000 Dutenek unibertsala termino dira. 71 00:04:20,000 --> 00:04:26,000 Push eta pop pila ez du axola zer jakin behar duzu. 72 00:04:26,000 --> 00:04:28,000 Ilarak daude, hainbat mota ikusiko dugu. 73 00:04:28,000 --> 00:04:32,000 Ez da benetan termino bat unibertsala, baina push eta pop pila for unibertsala dira. 74 00:04:32,000 --> 00:04:34,000 Push besterik ez da, pila jartzen. 75 00:04:34,000 --> 00:04:37,000 Pop da hartu off pila. 76 00:04:37,000 --> 00:04:43,000 Eta hemen ikusten dugu gure typedef struct pila ditugu, 77 00:04:43,000 --> 00:04:46,000 beraz, char ** kateak behar dugu. 78 00:04:46,000 --> 00:04:51,000 Ez zaitez ** edozein beldur. 79 00:04:51,000 --> 00:04:54,000 Hori amaitzeko kateen array bat izateaz 80 00:04:54,000 --> 00:04:58,000 edo erakusle bat array pertsonaia, non 81 00:04:58,000 --> 00:05:00,000 karaktere erakusleak kateak izan ohi da. 82 00:05:00,000 --> 00:05:05,000 Ez du izan kateak izango, baina hemen, kateak izan ari dira. 83 00:05:05,000 --> 00:05:08,000 >> Kateak array bat daukagu. 84 00:05:08,000 --> 00:05:14,000 Tamaina, eta horrek adierazten du zenbat elementuak dira gaur egun pila bat daukagu, 85 00:05:14,000 --> 00:05:19,000 eta, ondoren, gaitasuna, hau da, zenbat elementu pila izango dugu. 86 00:05:19,000 --> 00:05:22,000 Gaitasuna off hasi behar den zerbait 1 baino handiagoa, 87 00:05:22,000 --> 00:05:27,000 baina tamaina hasiko da 0 gisa. 88 00:05:27,000 --> 00:05:36,000 Orain daude, funtsean, hiru modu desberdinetan pila bat dela pentsa dezakezu. 89 00:05:36,000 --> 00:05:39,000 Beno, ez da ziur aski gehiago, baina nagusiak bi modu daude 90 00:05:39,000 --> 00:05:43,000 inplementa dezakezu array bat erabiliz, edo inplementa dezakezu lotuta zerrenda bat erabiliz. 91 00:05:43,000 --> 00:05:48,000 Loturarik zerrendak dira mota trivial pila egiteko. 92 00:05:48,000 --> 00:05:51,000 Oso erraza da lotutako zerrendak erabiliz pila bat egiteko, 93 00:05:51,000 --> 00:05:55,000 beraz, hemen, array erabiliz pila bat egin behar izan dugu, 94 00:05:55,000 --> 00:05:59,000 eta, ondoren, array erabiliz, ez da ere bi eratara egin dezakezu uste. 95 00:05:59,000 --> 00:06:01,000 Aurretik, esan dut pila gaitasuna dugu, 96 00:06:01,000 --> 00:06:04,000 beraz, elementu bat doi dezakegu pilan. 97 00:06:04,000 --> 00:06:09,000 >> Modu batean gerta zitekeela bezain laster hit 10 elementu gisa, gero Bukatutakoan da. 98 00:06:09,000 --> 00:06:13,000 Ezagutzen ez dela munduko 10 gauza lotuak goiko dezakezu 99 00:06:13,000 --> 00:06:16,000 izango duzula zure pila inoiz 10 baino gehiago izan gauza on 100 00:06:16,000 --> 00:06:20,000 pilaren tamaina on loturik Kasu horietan, goiko bat izan dezakezu. 101 00:06:20,000 --> 00:06:23,000 Edo zure pila unbounded litezke, 102 00:06:23,000 --> 00:06:27,000 baina ari zaren array bat egiten bada, horrek esan nahi du, aldi bakoitzean bakarra 10 elementu hit 103 00:06:27,000 --> 00:06:29,000 ondoren, 20 elementu hazten ari zaren joan, eta 20 elementu hit duzu, 104 00:06:29,000 --> 00:06:33,000 30 elementu edo 40 elementu zure array hazten joan zaren. 105 00:06:33,000 --> 00:06:37,000 Edukiera handitzeko, eta hemen zer egin behar dugu, hau da, behar duzu. 106 00:06:37,000 --> 00:06:40,000 Gehienezko tamaina iritsiko gara gure pila bakoitza denbora, 107 00:06:40,000 --> 00:06:46,000 zerbait on push dugu, edukiera handitzeko behar dugu. 108 00:06:46,000 --> 00:06:50,000 Hemen, push push boolearra (char * str) izendatu dugu. 109 00:06:50,000 --> 00:06:54,000 Char * str kate pila gainean bultzaka ari garela da, 110 00:06:54,000 --> 00:06:58,000 eta boolearra besterik ez dio arrakastarik izan ala ez dugu, edo huts egin du. 111 00:06:58,000 --> 00:07:00,000 >> Nola huts egin ahal izango dugu? 112 00:07:00,000 --> 00:07:04,000 Zer da soilik inguruabar duzula uste 113 00:07:04,000 --> 00:07:07,000 non false itzuli beharko genuke? 114 00:07:07,000 --> 00:07:09,000 Bai. 115 00:07:09,000 --> 00:07:12,000 [Student] bada osoa eta mugatzen ezarpena bat erabiltzen ari gara. 116 00:07:12,000 --> 00:07:17,000 Bai, eta, beraz, nola ez-definitu zuen dugu erantzun 117 00:07:17,000 --> 00:07:23,000 beteta badago eta itxitako ezarpena bat erabiltzen ari gara. 118 00:07:23,000 --> 00:07:26,000 Ondoren, behin betiko faltsua izango dugu itzultzeko. 119 00:07:26,000 --> 00:07:31,000 Bezain laster hit 10 gauzak array, ezin dugu egokitzen 11, faltsua itzuliko gara. 120 00:07:31,000 --> 00:07:32,000 Zer da bada unbounded? Bai. 121 00:07:32,000 --> 00:07:38,000 Ezin baduzu arrazoiren batengatik array zabaltzen. 122 00:07:38,000 --> 00:07:43,000 Bai, eta, beraz, memoria mugatua baliabide bat da, 123 00:07:43,000 --> 00:07:51,000 eta, azkenean, bultzaka mantentzen dugu gauza pila gainean eta gehiagoko berriz, 124 00:07:51,000 --> 00:07:54,000 eta saiatu handiagoa array esleitu egokitzen goaz 125 00:07:54,000 --> 00:07:59,000 edukiera handiagoa, eta erabiltzen ari garen malloc edo dena delakoa faltsua itzuli egingo da. 126 00:07:59,000 --> 00:08:02,000 Beno, malloc null itzuliko da. 127 00:08:02,000 --> 00:08:05,000 >> Gogoratu, bakoitza denbora deitu al duzu inoiz malloc, egiaztapena behar duzu behar bada ikusteko 128 00:08:05,000 --> 00:08:12,000 null itzultzen edo bestela, zuzentasuna kenkaria da. 129 00:08:12,000 --> 00:08:17,000 Pila bat izan unbounded nahi dugu geroztik, 130 00:08:17,000 --> 00:08:21,000 kasu bakarra itzuli faltsua goaz saiatzen gara, nahi izanez gero. 131 00:08:21,000 --> 00:08:26,000 handitzeko eta gaitasuna malloc edo dena delakoa itzultzen faltsua. 132 00:08:26,000 --> 00:08:30,000 Ondoren, pop argumentu bat behar du, 133 00:08:30,000 --> 00:08:37,000 pilaren goialdean eta katea itzultzen du. 134 00:08:37,000 --> 00:08:41,000 Whatever azken pilan bultzatu da zer pop itzuli egin da, 135 00:08:41,000 --> 00:08:44,000 eta kentzen ere pila. 136 00:08:44,000 --> 00:08:50,000 Eta nabarituko null itzultzen dela pila ez bada. 137 00:08:50,000 --> 00:08:53,000 Da beti posible pila hutsik dago. 138 00:08:53,000 --> 00:08:55,000 Java, zauden hori, edo beste hizkuntza erabiltzen bada, 139 00:08:55,000 --> 00:09:01,000 pila huts bat aterako da salbuespen bat edo zerbait eragin dezake. 140 00:09:01,000 --> 00:09:09,000 >> Baina C, null arazo horiek nola kudeatu dugu kasu asko mota da. 141 00:09:09,000 --> 00:09:13,000 Null itzultzea da nola pila hutsik zela adierazten dugu. 142 00:09:13,000 --> 00:09:16,000 Kodea duten zure pila funtzionalitatea probatu egingo dugu, 143 00:09:16,000 --> 00:09:19,000 ezartzea bultza eta pop. 144 00:09:19,000 --> 00:09:23,000 Hau ez da kode asko izan. 145 00:09:23,000 --> 00:09:40,000 I-benetan egiten dugu, hori baino lehen, aholkua, iradokizun- 146 00:09:40,000 --> 00:09:44,000 ikusten ez baduzu, malloc funtzioa ez da bakarrik 147 00:09:44,000 --> 00:09:47,000 zuretzat zeure memoria esleitzen. 148 00:09:47,000 --> 00:09:51,000 Esleipenen funtzio familia daude. 149 00:09:51,000 --> 00:09:53,000 Lehen malloc, zu erabiltzen da. 150 00:09:53,000 --> 00:09:56,000 Ondoren, calloc malloc gauza bera egiten du, 151 00:09:56,000 --> 00:09:59,000 baina dena zero izango da zuretzat. 152 00:09:59,000 --> 00:10:04,000 Duzun inoiz bada nahi dena ezartzeko null zerbait mallocing ondoren 153 00:10:04,000 --> 00:10:06,000 besterik ez duzu erabili behar calloc ordez idazteko lehen lekua 154 00:10:06,000 --> 00:10:09,000 loop memoria-bloke osoa zero. 155 00:10:09,000 --> 00:10:15,000 >> Idazketa malloc bezalakoa da, eta kasu berezi asko ditu, 156 00:10:15,000 --> 00:10:19,000 baina, funtsean, zer idazketa ez da 157 00:10:19,000 --> 00:10:24,000 erakuslea ordurako esleitu hartzen du. 158 00:10:24,000 --> 00:10:27,000 Idazketa arreta jarriz hemen nahi duzun funtzioa da. 159 00:10:27,000 --> 00:10:31,000 Erakuslea ordurako malloc itzuli behar izaten ditu. 160 00:10:31,000 --> 00:10:35,000 Demagun eskatu malloc erakuslea 10 byte. 161 00:10:35,000 --> 00:10:38,000 Ondoren, beranduago, 20 byte nahi duzun konturatzen zara, 162 00:10:38,000 --> 00:10:42,000 beraz, idazketa deitu erakuslea 20 byte horretan, 163 00:10:42,000 --> 00:10:47,000 eta idazketa automatikoki zuretzat guztia gainean kopiatu. 164 00:10:47,000 --> 00:10:51,000 Besterik ez duzu deitzen badu malloc berriro, I 10 byte bloke bat bezala. 165 00:10:51,000 --> 00:10:53,000 Orain 20 byte bloke bat behar dut, 166 00:10:53,000 --> 00:10:58,000 beraz, 20 byte malloc I bada, orduan eskuz kopiatu Lehenik eta behin, 10 byte behar dut 167 00:10:58,000 --> 00:11:01,000 bigarren gauza sartu eta, ondoren, lehenengo gauza. 168 00:11:01,000 --> 00:11:04,000 Idazketa hori kudeatu ahal izango duzu. 169 00:11:04,000 --> 00:11:11,000 >> Oharra sinadura void * izango da, 170 00:11:11,000 --> 00:11:15,000 besterik ez da erakuslea memoria-bloke bat itzuli 171 00:11:15,000 --> 00:11:17,000 ondoren void * ptr. 172 00:11:17,000 --> 00:11:22,000 Void * pentsa dezakezu generic erakuslea gisa. 173 00:11:22,000 --> 00:11:27,000 Oro har, void * inoiz ez aurre egiteko, 174 00:11:27,000 --> 00:11:30,000 baina malloc void * itzuli egin da, eta, ondoren, besterik ez erabili bezalako 175 00:11:30,000 --> 00:11:34,000 char * hau gaur egun izango. 176 00:11:34,000 --> 00:11:37,000 Aurreko void * izan da malloc itzuli 177 00:11:37,000 --> 00:11:41,000 gaur egun idazketa onartuz joan, eta, ondoren, tamaina 178 00:11:41,000 --> 00:11:49,000 byte esleitu nahi duzun kopurua, beraz, zure gaitasuna da. 179 00:11:49,000 --> 00:11:57,000 Emango dizu dut minutu pare eta gure espazioan. 180 00:11:57,000 --> 00:12:02,000 Hasi Revision 1. 181 00:12:16,000 --> 00:12:21,000 Gelditu dut espero ondoren, denbora nahikoa push ezartzeko, 182 00:12:21,000 --> 00:12:24,000 eta, ondoren, break emango dizut beste pop egiteko. 183 00:12:24,000 --> 00:12:27,000 Baina benetan ez hainbeste kodea duten guztiak. 184 00:12:27,000 --> 00:12:35,000 Kodea gehien zabalduz stuff da seguruenik, edukiera zabalduz. 185 00:12:35,000 --> 00:12:39,000 Ados, erabat egin behar, presioa ez 186 00:12:39,000 --> 00:12:47,000 baina betiere, eskuineko bidea zauden bezala sentitzen duzun bezala, hori da ona. 187 00:12:47,000 --> 00:12:53,000 >> Does Edozeinek kodea edozein dio sortu nirekin eroso sentitzen dira? 188 00:12:53,000 --> 00:12:59,000 Bai, egingo dut, baina ez du inor kodea edozein tira dezaket? 189 00:12:59,000 --> 00:13:05,000 Ados, ezin, hasten zara gorde, edozein da? 190 00:13:05,000 --> 00:13:09,000 Urrats hori ahaztu dut beti. 191 00:13:09,000 --> 00:13:15,000 Ados, push begira, 192 00:13:15,000 --> 00:13:18,000 Zure kodea azaldu nahi al duzu? 193 00:13:18,000 --> 00:13:24,000 [Student] Lehenik eta behin, tamaina handitu dut. 194 00:13:24,000 --> 00:13:28,000 Agian izan beharko nuke, hala ere uste dut, tamaina handitu nuen, 195 00:13:28,000 --> 00:13:31,000 da eta gaitasuna baino txikiagoa bada, ikusten dut. 196 00:13:31,000 --> 00:13:36,000 Eta ez bada gaitasuna baino gutxiago, gehitu array dagoeneko dugun dut. 197 00:13:36,000 --> 00:13:42,000 Eta ez bada, ahalmena biderkatu I 2 198 00:13:42,000 --> 00:13:50,000 eta kateak array reallocate dut zerbait edukiera handiagoa. 199 00:13:50,000 --> 00:13:55,000 Eta gero, hori huts egiten badu, erabiltzaileak esaten dut, eta itzultzeko faltsuak, 200 00:13:55,000 --> 00:14:04,000 eta isuna bada, orduan katea jarri dut berria Leku. 201 00:14:04,000 --> 00:14:07,000 >> [Rob B.] Halaber, nabarituko polit bat bitekin operadorea hemen erabiltzen dugun 202 00:14:07,000 --> 00:14:09,000 2 bider. 203 00:14:09,000 --> 00:14:11,000 Gogoratu, ezker shift 2 biderkatu behar da beti joan. 204 00:14:11,000 --> 00:14:15,000 Eskuin shift 2 arabera banatzen da luze gisa gogoratzen duzun esan nahi du. 205 00:14:15,000 --> 00:14:18,000 2 zatitzea 2 arabera banatzen da zenbaki oso bat. 206 00:14:18,000 --> 00:14:20,000 1 hemen edo han moztu egin dezake. 207 00:14:20,000 --> 00:14:26,000 Baina shift 1 utzitako 2 biderkatu behar da beti joan 208 00:14:26,000 --> 00:14:32,000 osokoa mugetatik gainezkatzea zaren, eta, ondoren, ez da izango. 209 00:14:32,000 --> 00:14:34,000 Alboko comment A. 210 00:14:34,000 --> 00:14:39,000 -Do hau ez da inolaz kodeketa inolako aldatzeko gustatzen zait, 211 00:14:39,000 --> 00:14:48,000 baina honen antzeko zerbait egin nahi dut. 212 00:14:48,000 --> 00:14:51,000 Gaur egun jada pixka bat egiteko. 213 00:15:04,000 --> 00:15:08,000 Agian, hau ez da kasu honetan ezin hobea erakutsi, 214 00:15:08,000 --> 00:15:14,000 baina segmentu I-bloke horietan 215 00:15:14,000 --> 00:15:17,000 ados, hau gertatzen bada, gero zerbait egin behar dut joan, 216 00:15:17,000 --> 00:15:19,000 eta, ondoren, funtzioa egiten da. 217 00:15:19,000 --> 00:15:22,000 Ez dut behar korritu ondoren, nire begiak modu guztiak funtzio behera 218 00:15:22,000 --> 00:15:25,000 beste ondoren gertatzen dena ikusteko. 219 00:15:25,000 --> 00:15:27,000 Hori izanez gero gertatzen bada, orduan itzuliko dut. 220 00:15:27,000 --> 00:15:30,000 Horrez gain, hau haratago guztia erantsi nice prestazioa 221 00:15:30,000 --> 00:15:33,000 desplazatzen utzi behin. 222 00:15:33,000 --> 00:15:40,000 Behar ez nuen-bada ridiculously lerro luzeak inoiz Zugandik gertu, 223 00:15:40,000 --> 00:15:45,000 ondoren, 4 byte horiek, lagun dezake, eta, gainera, zerbait gehiago ezker da, 224 00:15:45,000 --> 00:15:48,000 gutxiago overwhelmed sentitzen duzu nahi ados, gogoratu behar dut 225 00:15:48,000 --> 00:15:53,000 Begizta bat beste baten barruan barruan, berriz, loop batean ari naiz. 226 00:15:53,000 --> 00:15:58,000 Anywhere itzulera hau egin ahal izango duzu berehala, I mota bezala. 227 00:15:58,000 --> 00:16:05,000 Guztiz aukerakoa da, eta ez da inolaz ere espero. 228 00:16:05,000 --> 00:16:12,000 >> [Student] behar luke egon tamaina huts egoera? 229 00:16:12,000 --> 00:16:19,000 Huts baldintza hemen huts egin du idazketa dugu, eta, beraz, bai. 230 00:16:19,000 --> 00:16:22,000 Ohartu huts egoera, ustez, 231 00:16:22,000 --> 00:16:26,000 dugu free stuff geroago ezean, beti ari gara huts egin du 232 00:16:26,000 --> 00:16:29,000 ez du axola zenbat aldiz saiatu gara zerbait push. 233 00:16:29,000 --> 00:16:32,000 Mantendu dugu bultzaka bada, incrementing tamaina mantendu dugu, 234 00:16:32,000 --> 00:16:36,000 nahiz eta ez gara ezer pila gainean jarri. 235 00:16:36,000 --> 00:16:39,000 Normalean ez dugu Kontatzailea tamaina arte 236 00:16:39,000 --> 00:16:43,000 dugu bezala ondoren jarri du pilan. 237 00:16:43,000 --> 00:16:50,000 Egin nahi dugu, esan, bai hemen eta hemen. 238 00:16:50,000 --> 00:16:56,000 Eta gero s.size ≤ gaitasuna esaten ordez, edukiera baino txikiagoa da, 239 00:16:56,000 --> 00:17:01,000 besterik ez delako non dena zen mugitu. 240 00:17:01,000 --> 00:17:07,000 >> Eta gogoan, leku bakarra izan gara, seguru asko, itzultzeko faltsuak 241 00:17:07,000 --> 00:17:14,000 Hemen, non da idazketa itzuli null 242 00:17:14,000 --> 00:17:19,000 eta gertatuko errore estandarra gogoratu nahi izanez gero, 243 00:17:19,000 --> 00:17:22,000 agian, kasu honetan kontuan hartu dezakezu, non errore bat estandarra inprimatu nahi duzun, 244 00:17:22,000 --> 00:17:26,000 stderr hain fprintf ordez standard out zuzenean inprimatzeko. 245 00:17:26,000 --> 00:17:31,000 Berriz ere, ez da esperantza bat, baina errore bat ez bada, 246 00:17:31,000 --> 00:17:41,000 idatzi printf, ondoren, nahi out estandarrak ordez akats estandarra inprimatu egin dezakezu. 247 00:17:41,000 --> 00:17:44,000 >> Edonork beste ezer kontuan izan dute? Bai. 248 00:17:44,000 --> 00:17:47,000 [Student] [inaudible] baino gehiago joan ahal duzu? 249 00:17:47,000 --> 00:17:55,000 [Rob B.] Bai, binariness benetako edo zer da? 250 00:17:55,000 --> 00:17:57,000 [Student] Beraz, biderkatu 2? 251 00:17:57,000 --> 00:17:59,000 [Rob B.] Bai, batez ere. 252 00:17:59,000 --> 00:18:11,000 Lur bitarrean, berriz, beti izan dugu gure digituak multzoa. 253 00:18:11,000 --> 00:18:22,000 Ezkerraldean hau aldatzearen 1 funtsean txertatzen hemen eskuinaldean. 254 00:18:22,000 --> 00:18:25,000 Itzuli honetan, binary dena gogoratzeko 255 00:18:25,000 --> 00:18:28,000 2 potentzia bat da, beraz, honetan 2 adierazten du, 0, 256 00:18:28,000 --> 00:18:30,000 1 2, 2, 2. 257 00:18:30,000 --> 00:18:33,000 Eskuinaldean 0 bat sartu, mugitzeko besterik ez dugu dena baino gehiago. 258 00:18:33,000 --> 00:18:38,000 Zer 2 izan 0 1 2 da, 2, 2. 259 00:18:38,000 --> 00:18:41,000 Txertatuko dugun eskuinaldean 260 00:18:41,000 --> 00:18:44,000 da, nahitaez, 0 izango da, 261 00:18:44,000 --> 00:18:46,000 zentzua. 262 00:18:46,000 --> 00:18:49,000 Al duzu inoiz biderkatzen bada zenbaki bat 2, ez da amaitzeko bakoitiak 263 00:18:49,000 --> 00:18:54,000 beraz, leku 0 2 0 izan behar du, 264 00:18:54,000 --> 00:18:59,000 eta, hau da, zer da aurretik erdi mugitzeko duzu gertatuko bada ez dut ohartarazi 265 00:18:59,000 --> 00:19:01,000 bit kopurua zenbaki oso bat haratago, 266 00:19:01,000 --> 00:19:04,000 1 hori amaitzeko off joan. 267 00:19:04,000 --> 00:19:10,000 Hori bakarrik gertatuko kezka gaitasunak benetan handiak aurre bada. 268 00:19:10,000 --> 00:19:15,000 Baina puntu hartan, eta, ondoren, bilioika gauza array batekin ari zara aurre, 269 00:19:15,000 --> 00:19:25,000 memoria sartzen dira, eta agian ez hala ere. 270 00:19:25,000 --> 00:19:31,000 >> Pop, eta are errazagoa da orain lortu ahal izango dugu. 271 00:19:31,000 --> 00:19:36,000 Egin nahi izan duzu gertatuko sorta bat osoa, pop, 272 00:19:36,000 --> 00:19:38,000 eta orain edukiera erdian berriro. 273 00:19:38,000 --> 00:19:42,000 Idazketa duzu memoria zenbatekoa txikitu dezakezu, 274 00:19:42,000 --> 00:19:47,000 baina ez duzu kezkatu horregatik, eta, beraz, idazketa kasu bakarra izango da 275 00:19:47,000 --> 00:19:50,000 memoria gero eta handiagoa, inoiz ez memoria shrinking 276 00:19:50,000 --> 00:19:59,000 den pop super errazteko. 277 00:19:59,000 --> 00:20:02,000 Orain ilarak, pilak era atsegin izango diren, 278 00:20:02,000 --> 00:20:06,000 baina ordena hartzeko gauza izarrekin alderantziz. 279 00:20:06,000 --> 00:20:10,000 Ilara batean adibide prototypical lerro bat da, 280 00:20:10,000 --> 00:20:12,000 balitz English uste dut, esan nahi dut 281 00:20:12,000 --> 00:20:17,000 ilara baten adibide prototypical ilara batean. 282 00:20:17,000 --> 00:20:22,000 Beraz, lerro bat bezala, lehen pertsonan line Oraindik bada, 283 00:20:22,000 --> 00:20:24,000 linearen lehen pertsonak izan espero duzu. 284 00:20:24,000 --> 00:20:31,000 Line pertsona azken Oraindik bada, azken zerbitzua izango duzu. 285 00:20:31,000 --> 00:20:35,000 FIFO eredu hori deitzen diogu, pila, berriz, LIFO eredua izan zen. 286 00:20:35,000 --> 00:20:40,000 Hitz horiek nahiko unibertsalak dira. 287 00:20:40,000 --> 00:20:46,000 >> Pila Like eta array-ak ez bezala, ilarak normalean ez erdiko elementuak sartzeko aukera ematen. 288 00:20:46,000 --> 00:20:50,000 Hona hemen, pila bat, push eta pop ditugu. 289 00:20:50,000 --> 00:20:54,000 Hemen, deitu horietako enqueue eta adierazten gertatuko dugu. 290 00:20:54,000 --> 00:20:58,000 Ere entzun dut shift eta unshift izeneko horiek. 291 00:20:58,000 --> 00:21:02,000 Entzun dut esaten push eta pop ere ilarak aplikatzeko. 292 00:21:02,000 --> 00:21:05,000 Entzun ditut sartu, kendu, 293 00:21:05,000 --> 00:21:11,000 beraz, bultza eta, pop, pilak buruz hitz egiten badugu, eta ari zara bultzaka leihoa. 294 00:21:11,000 --> 00:21:16,000 Ari zaren ilarak buruz hitz egiten bada, erabili nahi dituzun hitz hautatu ahal izango duzu 295 00:21:16,000 --> 00:21:23,000 txertatzeko eta kentzeko, eta zer deitu behar da adostasuna ez da. 296 00:21:23,000 --> 00:21:27,000 Baina, hemen, enqueue eta adierazten dugu. 297 00:21:27,000 --> 00:21:37,000 Orain, egiturari itxura pila struct ia berdina. 298 00:21:37,000 --> 00:21:40,000 Baina pista mantentzeko burua dugu. 299 00:21:40,000 --> 00:21:44,000 Behera hemen dio uste dut, baina zergatik burua behar dugu? 300 00:21:53,000 --> 00:21:57,000 Prototipoak dira funtsean berdinak push eta pop. 301 00:21:57,000 --> 00:21:59,000 Dezakezu uste push eta pop gisa. 302 00:21:59,000 --> 00:22:08,000 Alde bakarra da pop itzuli da-ordez azken, lehenengo da itzuli. 303 00:22:08,000 --> 00:22:12,000 2, 1, 3, 4, edo zerbait. 304 00:22:12,000 --> 00:22:14,000 Eta hemen, hasiera-hasieratik. 305 00:22:14,000 --> 00:22:17,000 Gure ilaran da erabat osoa, beraz, ez da lau elementu. 306 00:22:17,000 --> 00:22:21,000 Gaur egun, gure ilara amaiera 2, 307 00:22:21,000 --> 00:22:24,000 eta, gaur egun, beste zerbait sartu gara. 308 00:22:24,000 --> 00:22:29,000 >> Zerbait bestela, zer egin genuen pila bertsioan txertatu nahi dugu 309 00:22:29,000 --> 00:22:36,000 gure memoria bloke zabaldu dugu. 310 00:22:36,000 --> 00:22:40,000 Zein da arazoa? 311 00:22:40,000 --> 00:22:45,000 [Student] 2 mugitzen zara. 312 00:22:45,000 --> 00:22:51,000 Zer aurretik esan dut ilara amaieran, 313 00:22:51,000 --> 00:22:57,000 horrek ez du zentzurik 1 hasten garela, 314 00:22:57,000 --> 00:23:01,000 ondoren, nahi adierazten du 1 dugu, ondoren adierazten 3, ondoren adierazten 4, 315 00:23:01,000 --> 00:23:05,000 ondoren adierazten 2, ondoren, hau adierazten du. 316 00:23:05,000 --> 00:23:08,000 Ezin dugu erabili idazketa, 317 00:23:08,000 --> 00:23:11,000 edo, gutxienez, idazketa beste modu batean erabiltzeko aukera izango duzu. 318 00:23:11,000 --> 00:23:15,000 Baina beharko duzu ez bakarrik erabili idazketa. 319 00:23:15,000 --> 00:23:18,000 Eskuz kopiatu zure memoria zoaz. 320 00:23:18,000 --> 00:23:21,000 >> Daude memoria kopiatzeko bi funtzioak. 321 00:23:21,000 --> 00:23:25,000 , Memcopy eta memmove. 322 00:23:25,000 --> 00:23:29,000 Man orriak irakurtzen dut zein erabili nahi duzun ikusteko. 323 00:23:29,000 --> 00:23:35,000 Ados, memcopy, diferentzia da 324 00:23:35,000 --> 00:23:38,000 memcopy eta memmove, kasu heldulekuak behar bezala 325 00:23:38,000 --> 00:23:41,000 non eskualdeko gainean gertatzen den eskualde bat kopiatzeko ari zaren 326 00:23:41,000 --> 00:23:46,000 ari zaren kopiatzea. 327 00:23:46,000 --> 00:23:50,000 Memcopy ez kudeatu. Memmove du. 328 00:23:50,000 --> 00:23:59,000 As-arazoa dela pentsa dezakezu 329 00:23:59,000 --> 00:24:09,000 demagun guy hau kopiatu nahi dut, 330 00:24:09,000 --> 00:24:13,000 lasaia honetan, lau horiek. 331 00:24:13,000 --> 00:24:16,000 Azkenean, zer array behar itxura 332 00:24:16,000 --> 00:24:26,000 kopia 2, 1, 2, 1, 3, 4, eta, ondoren, bukaeran stuff batzuk ondoren. 333 00:24:26,000 --> 00:24:29,000 Baina hori menpeko diren ordena kopiatu dugu, 334 00:24:29,000 --> 00:24:32,000 Izan ere, eskualde horretan ari gara kopiatzea ez badugu kontuan hartzen geroztik 335 00:24:32,000 --> 00:24:35,000 gainjartzen ari gara kopiatzea, 336 00:24:35,000 --> 00:24:46,000 gero Irteeran bezala, baliteke dugu hemen, 2 joan nahi dugun leku kopiatu, 337 00:24:46,000 --> 00:24:52,000 ondoren mugitu gure erakusleak aurrera. 338 00:24:52,000 --> 00:24:56,000 >> Orain hemen eta hemen ari dugu, eta gaur egun kopiatu nahi dugu 339 00:24:56,000 --> 00:25:04,000 lasaia honetan, tipo hau eta eraman aurrera gure erakusle. 340 00:25:04,000 --> 00:25:07,000 Zer azkenean eskuratu dugu, 2, 1, 2, 1, 2, 1 341 00:25:07,000 --> 00:25:10,000 egokiak ordez 2, 1, 2, 1, 3, 4 baita 342 00:25:10,000 --> 00:25:15,000 2, 1 overrode jatorrizko 3, 4. 343 00:25:15,000 --> 00:25:19,000 Memmove heldulekuak behar bezala. 344 00:25:19,000 --> 00:25:23,000 Kasu honetan, batez ere, beti erabili memmove 345 00:25:23,000 --> 00:25:26,000 heldulekuak delako zuzena. 346 00:25:26,000 --> 00:25:29,000 Ez du, oro har, ez da egin okerrago. 347 00:25:29,000 --> 00:25:32,000 Ideia horren ordez, hasiera-hasieratik, eta modu honetan hasten kopiatzea da 348 00:25:32,000 --> 00:25:35,000 besterik ez genuen bezala, hemen, amaieran hasten da eta kopia, 349 00:25:35,000 --> 00:25:38,000 eta, kasu horretan, ezin da inoiz duzu arazo bat. 350 00:25:38,000 --> 00:25:40,000 Errendimendua ez da galdu. 351 00:25:40,000 --> 00:25:47,000 Beti erabili memmove. Inoiz ez memcopy kezkatu. 352 00:25:47,000 --> 00:25:51,000 Eta hori da non bereizita memmove ari zaren 353 00:25:51,000 --> 00:26:01,000 zure ilara zati bilduta inguruan. 354 00:26:01,000 --> 00:26:04,000 Kezkak ez bada erabat egin. 355 00:26:04,000 --> 00:26:10,000 Hau da, pila, push, eta pop baino gehiago zaila da. 356 00:26:10,000 --> 00:26:15,000 >> Edonork kodea edozein lan egin izan dugu? 357 00:26:15,000 --> 00:26:21,000 Nahiz eta guztiz osatu gabe baldin bada? 358 00:26:21,000 --> 00:26:23,000 [Student] Bai, erabat osatu gabe, baina. 359 00:26:23,000 --> 00:26:27,000 Guztiz osatu gabe dago, betiere fin-Berrikusketaren gorde? 360 00:26:27,000 --> 00:26:32,000 Bakar denbora bakoitza ahazten dut. 361 00:26:32,000 --> 00:26:39,000 Ongi da, zer ez ikusi egingo zaio, gertatzen da gauzak tamaina aldatu behar dugu. 362 00:26:39,000 --> 00:26:42,000 Erabat ignore resize. 363 00:26:42,000 --> 00:26:49,000 Azaldu kode hau. 364 00:26:49,000 --> 00:26:54,000 Lehen naiz egiaztapena tamaina da lehenengo kopia baino gutxiago bada 365 00:26:54,000 --> 00:27:01,000 eta, ondoren, horren ondoren, sartu nuen burua + tamaina hartzen 366 00:27:01,000 --> 00:27:05,000 eta ziur wraps array edukiera inguruan egiten dut, 367 00:27:05,000 --> 00:27:08,000 eta Kate berria sartu dut posizio berean. 368 00:27:08,000 --> 00:27:12,000 Ondoren, tamaina handitzeko I, eta egia itzultzeko. 369 00:27:12,000 --> 00:27:22,000 >> [Rob B.], hau da, behin betiko kasuetan erabiliz mod nahi ari zaren bat. 370 00:27:22,000 --> 00:27:25,000 Edozein kasu-mota bat, non itzulbiratzeko inguruan duzu, uste duzu inguruan biltzeko, 371 00:27:25,000 --> 00:27:29,000 berehalako pentsamendu mod izan behar du. 372 00:27:29,000 --> 00:27:36,000 Optimizatzea azkar bat bezala / zure kodea lerro bat laburragoa 373 00:27:36,000 --> 00:27:42,000 line berehala honi jarraituz nabarituko duzu 374 00:27:42,000 --> 00:27:53,000 besterik ez tamaina + +, eta, beraz, batu lerro honetan sartzeko, tamaina + +. 375 00:27:53,000 --> 00:27:58,000 Orain behera hemen dugu, kasu 376 00:27:58,000 --> 00:28:01,000 non ez dugu behar adina memoria 377 00:28:01,000 --> 00:28:05,000 beraz, gure ahalmena handitzen ari gara 2. 378 00:28:05,000 --> 00:28:09,000 Arazo bera izan duzu hemen uste dut, baina alde batetara utzi ahal izango dugu orain, 379 00:28:09,000 --> 00:28:13,000 non baduzu, zure edukiera handitzeko huts egin du, 380 00:28:13,000 --> 00:28:18,000 ondoren, zure edukiera txikitzeko 2 berriro nahi duzu. 381 00:28:18,000 --> 00:28:24,000 Ohar labur bat da, besterik ez bezala egin ahal izango duzu + = 382 00:28:24,000 --> 00:28:30,000 ere egin dezakezu << =. 383 00:28:30,000 --> 00:28:43,000 Ia ezer berdinen aurretik joan daiteke, + = | =, & =, << =. 384 00:28:43,000 --> 00:28:52,000 Char * berriak gure memoria bloke berria da. 385 00:28:52,000 --> 00:28:55,000 Oh, hemen baino gehiago. 386 00:28:55,000 --> 00:29:02,000 >> Zer pertsonek gure memoria bloke berria mota buruzko deritzozu? 387 00:29:02,000 --> 00:29:06,000 [Student] char ** izan behar da. 388 00:29:06,000 --> 00:29:12,000 Thinking gure struct hemen, 389 00:29:12,000 --> 00:29:14,000 kateak da zer reallocating ari gara. 390 00:29:14,000 --> 00:29:21,000 Storage dinamiko berri bat osoa egiten ari gara ilaran elementuak. 391 00:29:21,000 --> 00:29:25,000 Zer da zure kateak behar esleitzea goaz oraintxe ari gara mallocing 392 00:29:25,000 --> 00:29:30,000 eta, beraz, berria da, char ** izango da. 393 00:29:30,000 --> 00:29:34,000 Kateak array bat izango da. 394 00:29:34,000 --> 00:29:38,000 Ondoren kasuan pean false itzuli goaz? 395 00:29:38,000 --> 00:29:41,000 [Student] char * egiten dugu? 396 00:29:41,000 --> 00:29:44,000 [Rob B.] Bai, dei ona. 397 00:29:44,000 --> 00:29:46,000 [Student] Zer izan da hori? 398 00:29:46,000 --> 00:29:49,000 [Rob B.] * karakterra tamaina egin nahi ditugu, ez baitago nahi dugu jada- 399 00:29:49,000 --> 00:29:53,000 hau litzateke, benetan oso arazo handi bat izan sizeof (char) 1 izango lukeelako. 400 00:29:53,000 --> 00:29:55,000 Sizeof char * 4 izango da, 401 00:29:55,000 --> 00:29:58,000 ints ari zaren aurre aldiz asko, beraz, 402 00:29:58,000 --> 00:30:01,000 ihes da joera int * int tamaina eta tamaina delako 403 00:30:01,000 --> 00:30:04,000 32-bit sistema bat dira gauza bera izango da. 404 00:30:04,000 --> 00:30:09,000 Baina, hemen, sizeof (char) eta sizeof (char *) ari dira orain, gauza bera izango du. 405 00:30:09,000 --> 00:30:15,000 >> Zer inguruabar non faltsua itzuliko gara? 406 00:30:15,000 --> 00:30:17,000 [Student] New null da. 407 00:30:17,000 --> 00:30:23,000 Bai, berria da null bada, faltsua itzuliko gara, 408 00:30:23,000 --> 00:30:34,000 eta behera bota dut hemen 409 00:30:34,000 --> 00:30:37,000 [Student] [inaudible] 410 00:30:37,000 --> 00:30:39,000 [Rob B.] Bai, hori gauza ederra da. 411 00:30:39,000 --> 00:30:46,000 Bai egin izan duzu 2 aldiz edukiera edo ahalmena shift 1 eta ondoren bakarrik ezarri edo dena delakoa hemen. 412 00:30:46,000 --> 00:30:52,000 Egin dugu izan genuen bezala. 413 00:30:52,000 --> 00:30:56,000 Edukiera >> = 1. 414 00:30:56,000 --> 00:31:08,000 Eta inoiz ez zaren 1 lekua galdu kezkatu 415 00:31:08,000 --> 00:31:12,000 utzi 1 desplazatzen duelako, eta, beraz, leku 1 da, nahitaez, 0, 416 00:31:12,000 --> 00:31:16,000 1 shifting, oraindik ari zaren fina izango da. 417 00:31:16,000 --> 00:31:19,000 [Student] Horretarako itzuli aurretik behar duzu? 418 00:31:19,000 --> 00:31:29,000 [Rob B.] Bai, hau erabat ez du zentzurik. 419 00:31:29,000 --> 00:31:36,000 >> Orain bere gain hartzen amaitzeko Egia amaieran itzuli dugu. 420 00:31:36,000 --> 00:31:39,000 Memmoves horiek egin dugu, 421 00:31:39,000 --> 00:31:45,000 Kontuz ibili behar dugu, nola egiten dugu. 422 00:31:45,000 --> 00:31:50,000 Does Edozeinek edozein iradokizun nola egiten dugu? 423 00:32:17,000 --> 00:32:21,000 Hona hemen gure Irteeran. 424 00:32:21,000 --> 00:32:28,000 Ezinbestean, hasieran berriro hasi nahi dugu 425 00:32:28,000 --> 00:32:35,000 eta bertatik kopia gauzak, 1, 3, 4, 2. 426 00:32:35,000 --> 00:32:41,000 Nola egin hori? 427 00:32:41,000 --> 00:32:52,000 Lehenik eta behin, gizon orria begiratu memmove berriro daukat. 428 00:32:52,000 --> 00:32:57,000 Memmove, argumentuak ordena beti da garrantzitsua. 429 00:32:57,000 --> 00:33:01,000 Gure helmuga nahi dugu, lehenik eta behin, iturri, bigarren, hirugarren tamaina. 430 00:33:01,000 --> 00:33:06,000 Alderantzikatu iturburua eta helburua duten funtzio asko daude. 431 00:33:06,000 --> 00:33:11,000 Helmuga, iturri joera koherentea izan zertxobait. 432 00:33:17,000 --> 00:33:21,000 Mugitu, zer da itzuli? 433 00:33:21,000 --> 00:33:27,000 Erakuslea itzultzen du helmuga, edozein Hori dela-eta nahi duzu baliteke. 434 00:33:27,000 --> 00:33:32,000 Argazki irakurri ahal izango dut, baina gure helmuga batera joan nahi dugu. 435 00:33:32,000 --> 00:33:35,000 >> Zein da gure helmuga behar du? 436 00:33:35,000 --> 00:33:37,000 [Student]. 437 00:33:37,000 --> 00:33:39,000 [Rob B.] Bai, eta bertan daude kopiatzea dugu? 438 00:33:39,000 --> 00:33:43,000 Lehenik eta behin, kopiatzea ari gara 1, 3, 4. 439 00:33:43,000 --> 00:33:50,000 Zer esan nahi du-1, 3, 4. 440 00:33:50,000 --> 00:33:55,000 Zer da hau 1 helbidea? 441 00:33:55,000 --> 00:33:58,000 Zer da 1 helbidea? 442 00:33:58,000 --> 00:34:01,000 [Student] [inaudible] 443 00:34:01,000 --> 00:34:03,000 [Rob B.] Head + lehen elementu helbidea. 444 00:34:03,000 --> 00:34:05,000 Nola lehen array elementu hartu behar dugu? 445 00:34:05,000 --> 00:34:10,000 [Student] Ilara. 446 00:34:10,000 --> 00:34:15,000 [Rob B.] Bai, q.strings. 447 00:34:15,000 --> 00:34:20,000 Gogoratu, hemen, gure burua 1. 448 00:34:20,000 --> 00:34:24,000 Darn. Uste dut da magikoki 449 00:34:24,000 --> 00:34:29,000 Hemen, gure burua 1. Nire kolorea aldatu ere noa. 450 00:34:29,000 --> 00:34:36,000 Eta hemen kateak. 451 00:34:36,000 --> 00:34:41,000 Honek, bai ahal izango dugu idazten baino gehiago egin dugu hemen 452 00:34:41,000 --> 00:34:43,000 buruak + q.strings. 453 00:34:43,000 --> 00:34:51,000 Jende asko ere idatzi & q.strings [buru]. 454 00:34:51,000 --> 00:34:55,000 Hau ez da benetan edozein gutxiago eraginkorra. 455 00:34:55,000 --> 00:34:58,000 Da pentsatzea ari zaren dereferencing eta ondoren, helbide lortzean, 456 00:34:58,000 --> 00:35:04,000 baina konpilatzailea itzuli zer aurretik izan genuen hala ere, q.strings + burua. 457 00:35:04,000 --> 00:35:06,000 Edo pentsatu nahi duzun modua. 458 00:35:06,000 --> 00:35:11,000 >> Eta zenbat byte kopiatu nahi dugu? 459 00:35:11,000 --> 00:35:15,000 [Student] Edukiera buru. 460 00:35:15,000 --> 00:35:18,000 Edukiera buru. 461 00:35:18,000 --> 00:35:21,000 Eta gero, beti izan duzu idazteko adibide bat 462 00:35:21,000 --> 00:35:23,000 figura hori eskuinera bada. 463 00:35:23,000 --> 00:35:26,000 [Student] It behar 2 Gero, banatzen da. 464 00:35:26,000 --> 00:35:30,000 Bai, eta, beraz, tamaina erabili izan dugula uste dut. 465 00:35:30,000 --> 00:35:35,000 Dugu oraindik tamaina-ari 466 00:35:35,000 --> 00:35:39,000 tamaina erabiliz, tamaina 4 berdinak ditugu. 467 00:35:39,000 --> 00:35:42,000 Gure tamaina 4 da. Gure burua: 1. 468 00:35:42,000 --> 00:35:46,000 3 elementu hauek kopiatu nahi dugu. 469 00:35:46,000 --> 00:35:54,000 Hori da behatu egiaztatu tamaina burua behar bezala 3. 470 00:35:54,000 --> 00:35:58,000 Eta atzera datozen hemen, aurretik esan dugun bezala, 471 00:35:58,000 --> 00:36:00,000 gaitasuna erabiltzen dugu gero, 2 zatitzea genuke 472 00:36:00,000 --> 00:36:04,000 dugu dagoeneko gure ahalmena hazi da, eta, beraz, horren ordez, tamaina erabili dugu. 473 00:36:11,000 --> 00:36:13,000 Kopiak zati hori. 474 00:36:13,000 --> 00:36:18,000 Orain, beste zati bat, zati hori, hasiera-hasieratik utzi kopiatu behar dugu. 475 00:36:18,000 --> 00:36:28,000 >> Hori zer posizioa sartu memmove? 476 00:36:28,000 --> 00:36:32,000 [Student] Plus tamaina - buru. 477 00:36:32,000 --> 00:36:38,000 Bai, eta, beraz, dagoeneko egin dugu tamaina kopiatu - burua bytes 478 00:36:38,000 --> 00:36:43,000 eta, beraz, non gainerako byte kopiatu nahi dugu berria da 479 00:36:43,000 --> 00:36:48,000 eta, ondoren, tamaina minus-ondo, byte kopurua dagoeneko dugu kopiatu sartu 480 00:36:48,000 --> 00:36:52,000 Eta gero, non dira kopiatzeko dugu? 481 00:36:52,000 --> 00:36:54,000 [Student] Q.strings [0]. 482 00:36:54,000 --> 00:36:56,000 [Rob B.] Bai, q.strings. 483 00:36:56,000 --> 00:37:02,000 Egin izan dugu, eta bai q.strings [0]. 484 00:37:02,000 --> 00:37:05,000 Nabarmen hori baino gutxiago komuna da. 485 00:37:05,000 --> 00:37:14,000 , Besterik ez bada, 0 izango da, eta, ondoren, joera, q.strings ikusiko duzu. 486 00:37:14,000 --> 00:37:16,000 Hori da, non kopiatzea ari gara. 487 00:37:16,000 --> 00:37:18,000 Zenbat byte kopiatu utzi dugu? >> [Student] 10. 488 00:37:18,000 --> 00:37:20,000 Eskuin. 489 00:37:20,000 --> 00:37:25,000 [Student] 5 biderkatu egin dugu - 10 aldiz tamaina byte edo zerbait? 490 00:37:25,000 --> 00:37:30,000 Bai, eta, beraz, hau da, non-zer ari gara kopiatzea? 491 00:37:30,000 --> 00:37:32,000 [Student] [inaudible] 492 00:37:32,000 --> 00:37:34,000 Zer ari gara gauza kopiatzea mota da? 493 00:37:34,000 --> 00:37:36,000 [Student] [inaudible] 494 00:37:36,000 --> 00:37:41,000 Bai, * char duten kopiatzea ari gara, beraz, ez dakigu non horiek datozen. 495 00:37:41,000 --> 00:37:47,000 Beno, non ari diren seinalatuz, kateak bezala, amaituko dugu, ilara gainean bultzaka 496 00:37:47,000 --> 00:37:49,000 edo ilara gainean HILARAN IPINTZEN. 497 00:37:49,000 --> 00:37:51,000 Non horiek datozen, ideia ez dugu. 498 00:37:51,000 --> 00:37:56,000 Besterik ez dugu behar char * s beren segimendua egiteko. 499 00:37:56,000 --> 00:38:00,000 Ez dugu nahi tamaina kopiatu - bytes burua. 500 00:38:00,000 --> 00:38:03,000 - Burua char * s, tamaina kopiatu nahi dugu 501 00:38:03,000 --> 00:38:11,000 beraz, hau biderkatu sizeof (char *) goaz. 502 00:38:11,000 --> 00:38:17,000 Same behera hemen, buru * sizeof (char *). 503 00:38:17,000 --> 00:38:24,000 >> [Student] Zer jakin [inaudible]? 504 00:38:24,000 --> 00:38:26,000 Eskubide hori hemen? 505 00:38:26,000 --> 00:38:28,000 [Student] Ez, hori azpian, tamaina - buru. 506 00:38:28,000 --> 00:38:30,000 [Rob B.] eskubide hori hemen? 507 00:38:30,000 --> 00:38:32,000 Erakuslea aritmetika. 508 00:38:32,000 --> 00:38:35,000 Nola erakuslea aritmetika lanera joan da 509 00:38:35,000 --> 00:38:40,000 automatikoki biderkatzen ari garela mota aurre tamaina. 510 00:38:40,000 --> 00:38:46,000 Just nahi hemen, new + (tamaina - burua) 511 00:38:46,000 --> 00:38:56,000 zehazki & berri - buru] baliokidea 512 00:38:56,000 --> 00:39:00,000 espero dugu behar bezala lan egiten duten bitartean, 513 00:39:00,000 --> 00:39:04,000 geroztik int array aurre ari gara, gero ez dugu indizea int- 514 00:39:04,000 --> 00:39:07,000 edo 5 tamaina eta 4 elementu nahi duzun, orduan indizea dugu 515 00:39:07,000 --> 00:39:10,000 int array [4]. 516 00:39:10,000 --> 00:39:14,000 You don't [4] * int tamaina. 517 00:39:14,000 --> 00:39:21,000 Maneiatzen dituen automatikoki, eta kasu honetan 518 00:39:21,000 --> 00:39:29,000 literalki baliokidea da, beraz, parentesia sintaxia 519 00:39:29,000 --> 00:39:34,000 besterik ez da hau bihurtu bezain laster, konpilatu duzun bezala. 520 00:39:34,000 --> 00:39:38,000 Zerbait zaindua izan behar duzu 521 00:39:38,000 --> 00:39:42,000 neurri gehitzen ari zaren buru 522 00:39:42,000 --> 00:39:45,000 ez byte gehitzen ari zaren. 523 00:39:45,000 --> 00:39:53,000 Bat char * gehitzen ari zara, zein byte edo dena delakoa izan daiteke. 524 00:39:53,000 --> 00:39:56,000 >> Beste galdera? 525 00:39:56,000 --> 00:40:04,000 Ados, adierazten da errazagoa izango. 526 00:40:04,000 --> 00:40:11,000 Emango dizut minutu bat ezartzeko. 527 00:40:11,000 --> 00:40:18,000 Oh, eta uste dut, hau da egoera berean non 528 00:40:18,000 --> 00:40:21,000 enqueue kasuan, ari gara, null HILARAN IPINTZEN bada, 529 00:40:21,000 --> 00:40:24,000 agian, hura kudeatzeko nahi dugu, agian ez dugu. 530 00:40:24,000 --> 00:40:27,000 Ez dugu berriro hemen, baina gure pila kasuan bezala. 531 00:40:27,000 --> 00:40:34,000 Enqueue null bada, nahi ezikusi izatea. 532 00:40:34,000 --> 00:40:40,000 Edonork kodea zenbait tira dezaket? 533 00:40:40,000 --> 00:40:45,000 [Student] dut adierazten du. 534 00:40:45,000 --> 00:40:56,000 2 bertsioa, ados. 535 00:40:56,000 --> 00:40:59,000 Azaldu nahi al duzu? 536 00:40:59,000 --> 00:41:01,000 [Student] Lehenik eta behin, ziurtatu ilaran zerbait 537 00:41:01,000 --> 00:41:07,000 eta tamaina jaitsi da 1. 538 00:41:07,000 --> 00:41:11,000 Hori egin behar duzu, eta, ondoren, burua itzuli 539 00:41:11,000 --> 00:41:13,000 eta ondoren, mugitu burua, 1. 540 00:41:13,000 --> 00:41:19,000 Ados, beraz, ez dago bat izkina kasuan, kontuan hartu behar dugu. Bai. 541 00:41:19,000 --> 00:41:24,000 [Student] zure burua azken elementua bada, 542 00:41:24,000 --> 00:41:26,000 gero, nahi ez dituzun burua array kanpo seinalatu. 543 00:41:26,000 --> 00:41:29,000 >> Bai, eta, beraz, ahalik eta azkarren burua gure array amaieran hits, 544 00:41:29,000 --> 00:41:35,000 adierazten dugunean, gure burua an behar berriz 0. 545 00:41:35,000 --> 00:41:40,000 Zoritxarrez, ezin dugu hori urrats bat. 546 00:41:40,000 --> 00:41:44,000 Ziurrenik nuke konpondu da asmatzen dut 547 00:41:44,000 --> 00:41:52,000 hau da, char * izango da, zer itzultzen ari gara, 548 00:41:52,000 --> 00:41:55,000 edozein aldagai izen nahi izan. 549 00:41:55,000 --> 00:42:02,000 Ondoren, gure ahalmena burua mod nahi dugu 550 00:42:02,000 --> 00:42:10,000 eta, ondoren, itzuli RET. 551 00:42:10,000 --> 00:42:14,000 Jende asko hemen egin dute agian 552 00:42:14,000 --> 00:42:19,000 hau-you'll kasuan da jendeak burua bada 553 00:42:19,000 --> 00:42:29,000 edukiera baino handiagoa da, ez buru - edukiera. 554 00:42:29,000 --> 00:42:36,000 Eta hori zer mod da inguruan lan egiten. 555 00:42:36,000 --> 00:42:41,000 Head mod = edukiera askoz ere garbiagoa 556 00:42:41,000 --> 00:42:51,000 edukiera edukiera burua baino buru handiagoa bada baino inguruan egokitzerik 557 00:42:51,000 --> 00:42:56,000 >> Zalantzak dituzu? 558 00:42:56,000 --> 00:43:02,000 Ados, utzi dugu azken gauza da gure lotutako zerrenda da. 559 00:43:02,000 --> 00:43:07,000 Zerrenda lotuta portaera batzuk erabil liteke zenituen 560 00:43:07,000 --> 00:43:11,000 lotutako taulak hash zerrendak, hash taula bat egin bada. 561 00:43:11,000 --> 00:43:15,000 Biziki gomendatzen dut hash taula bat egiten da. 562 00:43:15,000 --> 00:43:17,000 Dituzte dagoeneko dezakezu trie bat egin, 563 00:43:17,000 --> 00:43:23,000 baina saiatzen dira, zailagoa. 564 00:43:23,000 --> 00:43:27,000 Teoria, asymptotically ari dira hobeak. 565 00:43:27,000 --> 00:43:30,000 Baina handi taula begiratu, 566 00:43:30,000 --> 00:43:35,000 eta saiatzen da, ez dute inoiz hobeto, eta memoria gehiago hartzen dute. 567 00:43:35,000 --> 00:43:43,000 Everything about saiatzen eta ondorioz sortu okerrago lan gehiago. 568 00:43:43,000 --> 00:43:49,000 David Malan soluzioa beti da 569 00:43:49,000 --> 00:43:56,000 mezu beti zuen bere trie konponbidea, eta ikus dezagun non dago gaur egun. 570 00:43:56,000 --> 00:44:00,000 Zer zen pean, zuen David J? 571 00:44:00,000 --> 00:44:06,000 # 18 zen, eta hori ez da izugarri txarra, beraz, 572 00:44:06,000 --> 00:44:09,000 eta hori onenetako bat izango saiatzen uste dezakezu 573 00:44:09,000 --> 00:44:17,000 edo onena bat trie baten saiatuko da. 574 00:44:17,000 --> 00:44:23,000 Ere ez da bere jatorrizko irtenbidea? 575 00:44:23,000 --> 00:44:29,000 Trie konponbideak joera gehiago izan RAM erabilera barruti honetan sentitzen dut. 576 00:44:29,000 --> 00:44:33,000 >> Oso top behera joan, eta RAM erabilera digituak bakarra da. 577 00:44:33,000 --> 00:44:36,000 Joan behera beheko aldera, eta, ondoren, saiatuko ikusten hasten zara 578 00:44:36,000 --> 00:44:41,000 non RAM erabilera erabat masiboa lortzen dituzu, 579 00:44:41,000 --> 00:44:45,000 eta saiatzen dira, zailagoa. 580 00:44:45,000 --> 00:44:53,000 Ez dago oso-osorik, baina hezkuntza-esperientzia bat merezi egin baduzu. 581 00:44:53,000 --> 00:44:56,000 Azken gauza gure lotutako zerrenda da, 582 00:44:56,000 --> 00:45:04,000 eta horiek hiru gauza, pilak, ilarak, eta lotutako zerrendak, 583 00:45:04,000 --> 00:45:09,000 informatika al duzu inoiz ez edozein etorkizuneko gauza 584 00:45:09,000 --> 00:45:12,000 ezagutzen duzu gauza horiek bere gain hartuko du. 585 00:45:12,000 --> 00:45:19,000 Guztia oinarrizko dira. 586 00:45:19,000 --> 00:45:25,000 >> Loturarik zerrendak, eta hemen banaka lotutako zerrenda bat dugu gure ezartzea izango da. 587 00:45:25,000 --> 00:45:34,000 Zer esan nahi du banaka lotuta esan nahi bi aldiz lotuta ez bezala? Bai. 588 00:45:34,000 --> 00:45:37,000 [Student] hurrengo erakuslea erakusleak, baino soilik puntu, 589 00:45:37,000 --> 00:45:39,000 ko eta ondoren aurrekoa bezala. 590 00:45:39,000 --> 00:45:44,000 Bai, eta, beraz, irudi formatuan, zer egin dut? 591 00:45:44,000 --> 00:45:48,000 Bi gauza egin behar dut. Argazki eta irudi izan dut. 592 00:45:48,000 --> 00:45:51,000 Argazki formatuan, gure banaka lotuta zerrendak, 593 00:45:51,000 --> 00:45:57,000 ezinbestean, gure zerrenda burua erakuslea mota batzuk ditugu, 594 00:45:57,000 --> 00:46:02,000 eta, ondoren, gure zerrendan barruan, besterik ez dugu erakusleak 595 00:46:02,000 --> 00:46:05,000 eta, agian, puntu hau null. 596 00:46:05,000 --> 00:46:08,000 , Zure lotuta banaka zerrenda bat marrazki tipikoa izango da. 597 00:46:08,000 --> 00:46:14,000 Bi aldiz lotuta zerrenda A, atzeraka joatea dezakezu. 598 00:46:14,000 --> 00:46:19,000 Ematen dut zerrendan edozein nodo baduzu, ondoren, derrigorrez dezakezu lortu 599 00:46:19,000 --> 00:46:23,000 beste nodo zerrendako edozein da bi aldiz lotuta zerrenda bat bada. 600 00:46:23,000 --> 00:46:27,000 Baina badizut zerrendan hirugarren nodo eta banaka lotuta zerrenda bat da, 601 00:46:27,000 --> 00:46:30,000 ez da inoiz zaren lehen eta bigarren nodo. 602 00:46:30,000 --> 00:46:34,000 Eta ez da onurak eta detriments, eta bistako bat 603 00:46:34,000 --> 00:46:42,000 hartu tamaina gehiago nahi, eta non gauza horiek seinalatuz pista mantentzeko duzu. 604 00:46:42,000 --> 00:46:49,000 Baina zaindu bakarrik gara banaka lotuta. 605 00:46:49,000 --> 00:46:53,000 >> A gauza batzuk ezartzea izan dugu. 606 00:46:53,000 --> 00:47:00,000 Zure typedef struct nodo, int i: struct nodo * hurrengo; nodoa. 607 00:47:00,000 --> 00:47:09,000 Typedef That zure adimenak sartu behar da erre. 608 00:47:09,000 --> 00:47:14,000 Quiz 1 nahi behar zerrenda lotuta nodo typedef bat eman, 609 00:47:14,000 --> 00:47:18,000 eta berehala scribble behera egin ahal izango duzu behar duzu 610 00:47:18,000 --> 00:47:22,000 nahiz eta pentsatu gabe. 611 00:47:22,000 --> 00:47:27,000 Pare galdera asmatzen dut, zergatik egiturari hemen behar dugu? 612 00:47:27,000 --> 00:47:32,000 Zergatik ezin nodo * esaten dugu? 613 00:47:32,000 --> 00:47:35,000 [Student] [inaudible] 614 00:47:35,000 --> 00:47:38,000 Bai. 615 00:47:38,000 --> 00:47:44,000 Nodo bat definitzen duen gauza bakarra da gauza bat 616 00:47:44,000 --> 00:47:47,000 typedef bera da. 617 00:47:47,000 --> 00:47:55,000 Baina puntu honetan, analizatzean mota gara hau eta egitura nodo definizio bidez, 618 00:47:55,000 --> 00:48:01,000 ez dugu amaitu gure typedef oraindik, beraz geroztik typedef ez da amaitu, 619 00:48:01,000 --> 00:48:05,000 nodoa ez da existitzen. 620 00:48:05,000 --> 00:48:12,000 Baina struct nodo egiten du, eta nodo honetan hemen, 621 00:48:12,000 --> 00:48:14,000 izan ere eman ahal zaizkie beste ezer. 622 00:48:14,000 --> 00:48:16,000 Deitu behar izan n. 623 00:48:16,000 --> 00:48:19,000 Deitu ahal izango da lotutako zerrenda nodo. 624 00:48:19,000 --> 00:48:21,000 Deitu behar izan ezer. 625 00:48:21,000 --> 00:48:26,000 Baina struct nodoa deitu behar dira eta egitura nodo hau gauza bera. 626 00:48:26,000 --> 00:48:29,000 Zer da hau ere hemen egongo deitzen duzunean, 627 00:48:29,000 --> 00:48:32,000 eta beraz, galderaren bigarren puntua erantzuten 628 00:48:32,000 --> 00:48:37,000 hori dela-eta-a ikusiko duzu structs eta structs-typedefs aldiz asko, 629 00:48:37,000 --> 00:48:42,000 typedef struct non bakarrik ikusiko dituzu anonimoak structs ikusiko duzu, 630 00:48:42,000 --> 00:48:47,000 ezartzeko eta egitura, hiztegi, edo dena delakoa. 631 00:48:47,000 --> 00:48:51,000 >> Zergatik hemen ez nodo esan behar dugu? 632 00:48:51,000 --> 00:48:54,000 Zergatik ezin anonimo eta egitura bat izango da? 633 00:48:54,000 --> 00:48:56,000 Ia gauza bera erantzun. 634 00:48:56,000 --> 00:48:58,000 [Student] da erreferentzia eta egitura barruan behar duzu. 635 00:48:58,000 --> 00:49:04,000 Bai, eta egitura barruan, eta egitura bera aipatzeko behar duzu. 636 00:49:04,000 --> 00:49:10,000 Ez baduzu, izena eman eta egitura bat da, struct anonimo bat izanez gero, ezin da erreferentzia. 637 00:49:10,000 --> 00:49:17,000 Eta azkenik, baina ez behintzat-horiek guztiak izan beharko zertxobait zuzenean, 638 00:49:17,000 --> 00:49:20,000 lagunduko duzu eta konturatu behar dute ari zaren hori izanez gero idatziz 639 00:49:20,000 --> 00:49:24,000 zerbait gaizki egiten ari zaren gauza mota horiek ez badu zentzurik. 640 00:49:24,000 --> 00:49:28,000 Azken baina ez, gutxienez, zergatik ez dute struct nodo *? 641 00:49:28,000 --> 00:49:34,000 Zergatik ezin nodo besterik ez da egiturari dira hurrengo? 642 00:49:34,000 --> 00:49:37,000 [Student] egiturari hurrengo erakuslea. 643 00:49:37,000 --> 00:49:39,000 Hori da, ezinbestean, zer nahi dugun. 644 00:49:39,000 --> 00:49:42,000 Zergatik izan daiteke inoiz ez struct nodo hurrengo? 645 00:49:42,000 --> 00:49:50,000 Zergatik ez struct nodo * hurrengoa izan behar du? Bai. 646 00:49:50,000 --> 00:49:53,000 [Student] infinitua loop bat bezalakoa da. 647 00:49:53,000 --> 00:49:55,000 Bai. 648 00:49:55,000 --> 00:49:57,000 [Student] litzateke bakar batean egon daitezke. 649 00:49:57,000 --> 00:50:02,000 Bai, besterik gabe, nola tamaina edo zerbait egin genuke pentsatzea. 650 00:50:02,000 --> 00:50:08,000 Eta egitura baten tamaina da, funtsean, + edo - eredua batzuk hemen edo han. 651 00:50:08,000 --> 00:50:15,000 Funtsean struct, gauzak tamainen batura izango da. 652 00:50:15,000 --> 00:50:18,000 Eskubide hori hemen, ezer aldatu gabe, tamaina da erraza izango. 653 00:50:18,000 --> 00:50:24,000 Struct nodoaren tamaina da i + hurrengo tamaina tamaina izango du. 654 00:50:24,000 --> 00:50:27,000 I tamaina 4 izango da. Hurrengo tamaina 4 izango da. 655 00:50:27,000 --> 00:50:30,000 Struct nodoaren tamaina 8 izango da. 656 00:50:30,000 --> 00:50:34,000 Ez badugu * sizeof pentsatuz, 657 00:50:34,000 --> 00:50:37,000 gero, sizeof (i) 4 izango da. 658 00:50:37,000 --> 00:50:43,000 Tamaina eta egitura nodo hurrengo i tamaina + struct nodo hurrengo tamaina joan 659 00:50:43,000 --> 00:50:46,000 + I + struct nodo hurrengo tamaina tamaina. 660 00:50:46,000 --> 00:50:55,000 Nodo errekurtsio infinitua izango litzateke. 661 00:50:55,000 --> 00:51:00,000 Hori dela eta, hau da, gauzak nola izatea. 662 00:51:00,000 --> 00:51:03,000 >> Berriz ere, zalantzarik gabe, buruz ikasi duten, 663 00:51:03,000 --> 00:51:06,000 edo, gutxienez, ulertzen nahikoa gai izan daiteke 664 00:51:06,000 --> 00:51:12,000 arrazoia zer begiratu behar bezala bidez. 665 00:51:12,000 --> 00:51:14,000 Gauzak inplementatzeko nahi dugu. 666 00:51:14,000 --> 00:51:18,000 Luzera bada list- 667 00:51:18,000 --> 00:51:21,000 iruzur eta mantendu 668 00:51:21,000 --> 00:51:24,000 global luzera edo zerbait, baina ez dugu horretarako. 669 00:51:24,000 --> 00:51:28,000 Zerrendaren luzera zenbatzen ari dugu. 670 00:51:28,000 --> 00:51:34,000 Badu dugu, funtsean, bilaketa bat da, beraz, 671 00:51:34,000 --> 00:51:41,000 beraz, zenbaki osoen zerrenda lotuta zenbaki oso lotuta zerrendan bada bat behar dugu. 672 00:51:41,000 --> 00:51:44,000 Itxi zerrendaren hasieran txertatzeko. 673 00:51:44,000 --> 00:51:46,000 Append amaieran txertatzeko da. 674 00:51:46,000 --> 00:51:53,000 Insert_sorted zerrendako posizio ordenatzen txertatzeko. 675 00:51:53,000 --> 00:52:01,000 Insert_sorted mota bere gain hartzen ez erabili modu txarrean itxi edo erantsi. 676 00:52:01,000 --> 00:52:09,000 >> Insert_sorted insert_sorted-ari zaren ezartzeko 677 00:52:09,000 --> 00:52:13,000 demagun gure lotuta zerrenda dugu. 678 00:52:13,000 --> 00:52:18,000 Hau da, gaur egun, hala nola 2, 4, 5 itxura. 679 00:52:18,000 --> 00:52:24,000 3 sartu behar dira, eta, beraz, betiere zerrenda bera, dagoeneko horrela antolatu nahi dut, 680 00:52:24,000 --> 00:52:27,000 erraza da, non 3 pertenece aurkitu. 681 00:52:27,000 --> 00:52:29,000 2 hasiko dut. 682 00:52:29,000 --> 00:52:32,000 Ados, 3 2 baino handiagoa da, beraz, jarraitzea nahi dut. 683 00:52:32,000 --> 00:52:35,000 Oh, 4 handiegia da, beraz, 3 joateko 2 eta 4 arteko ezagutzen dut, 684 00:52:35,000 --> 00:52:39,000 eta erakusleak eta stuff hori guztia konpondu behar dut. 685 00:52:39,000 --> 00:52:43,000 Baina ez dugu ez bada zorrozki erabili insert_sorted 686 00:52:43,000 --> 00:52:50,000 gustatzen dezagun, besterik gabe esan 6 gunearen aurretik I, 687 00:52:50,000 --> 00:52:55,000 gero, nire zerrenda lotutako bihurtu da hau. 688 00:52:55,000 --> 00:53:01,000 Gaur egun, ez du zentzurik, eta, beraz, insert_sorted, besterik ez dezakezu bere gain hartzen 689 00:53:01,000 --> 00:53:04,000 zerrenda hori horrela antolatu, nahiz eta eragiketa existitzen 690 00:53:04,000 --> 00:53:09,000 ez da horrela antolatu eragin dezake, eta hori da. 691 00:53:09,000 --> 00:53:20,000 Aurkitu lagungarria txertatze-beraz, horiek inplementatzeko joan zaren gauzak nagusia. 692 00:53:20,000 --> 00:53:24,000 >> Oraingoz, hartu minutu bat luzera egin behar badu, 693 00:53:24,000 --> 00:53:30,000 eta horiek nahiko azkarra izan behar du. 694 00:53:41,000 --> 00:53:48,000 Itxi Nearing, beraz, edonork ezer luzera edo badu? 695 00:53:48,000 --> 00:53:50,000 Ia berdina izan dute. 696 00:53:50,000 --> 00:53:57,000 [Student] Length. 697 00:53:57,000 --> 00:54:01,000 Ikus dezagun, berrikusi. 698 00:54:01,000 --> 00:54:04,000 Ongi da. 699 00:54:12,000 --> 00:54:15,000 Azaldu nahi al duzu? 700 00:54:15,000 --> 00:54:21,000 [Student] erakuslea nodo bat sortu dut, eta lehenik eta behin, gure aldagai global abiarazi, 701 00:54:21,000 --> 00:54:27,000 eta, ondoren, null bada seg matxura bat lortu Ez dut, beraz, eta 0-ra itzuliko Hori horrela bada, egiaztatu dut. 702 00:54:27,000 --> 00:54:34,000 Bestela, I begizta bidez, pista Conservación guztia barruan 703 00:54:34,000 --> 00:54:38,000 zenbat aldiz sartu ditut zerrendako hurrengo elementua 704 00:54:38,000 --> 00:54:43,000 eta gehikuntza-operazio bera ere sartzeko benetako elementu hori, 705 00:54:43,000 --> 00:54:47,000 eta gero, etengabe I check null bada ikusteko, 706 00:54:47,000 --> 00:54:56,000 eta da null izanez gero, eta gero eta aborts accessed dut elementu kopurua itzultzen du. 707 00:54:56,000 --> 00:55:01,000 >> [Rob B.] Does Edozeinek ezer iruzkinak edozein? 708 00:55:01,000 --> 00:55:06,000 Badirudi WISE fina zuzentasuna. 709 00:55:06,000 --> 00:55:10,000 [Student] ez dut uste nodo == null behar duzu. 710 00:55:10,000 --> 00:55:13,000 Bai, eta, beraz, nodo bada == null bueltan 0. 711 00:55:13,000 --> 00:55:18,000 Baina nodo == null gero, hau-oh, zuzentasuna gai bat da. 712 00:55:18,000 --> 00:55:23,000 Besterik ez i ari zaren itzuli zen, baina ez da esparrua oraintxe. 713 00:55:23,000 --> 00:55:30,000 Besterik ez duzu egin behar int i, beraz, 0 = i. 714 00:55:30,000 --> 00:55:34,000 Baina nodo da null bada eta, ondoren, oraindik ere i 0 izango da, 715 00:55:34,000 --> 00:55:39,000 eta 0-ra itzuliko dugu, eta, beraz, kasu honetan berdin-berdina da, beraz. 716 00:55:39,000 --> 00:55:48,000 Beste gauza bat komuna da adierazpenean mantentzeko 717 00:55:48,000 --> 00:55:51,000 loop for nodo barruan. 718 00:55:51,000 --> 00:55:54,000 Esan-oh izan duzu, ez. 719 00:55:54,000 --> 00:55:56,000 Dezagun mantendu hau. 720 00:55:56,000 --> 00:55:59,000 Baliteke nuke jarri int i = 0 Hemen, 721 00:55:59,000 --> 00:56:05,000 gero nodo * nodo = hemen lehen. 722 00:56:05,000 --> 00:56:11,000 Eta hau da seguruenik, hau kentzeko lortzean gaur egun. 723 00:56:11,000 --> 00:56:14,000 Hau da, ziurrenik, nola idatzi nuke. 724 00:56:14,000 --> 00:56:21,000 Izan duzu atsegin dute hau ere bila. 725 00:56:21,000 --> 00:56:25,000 Loop egitura hemen 726 00:56:25,000 --> 00:56:30,000 ia natural int i = 0 izan behar du 727 00:56:30,000 --> 00:56:33,000 array luzera baino txikiagoa da i + +. 728 00:56:33,000 --> 00:56:38,000 Horrela batetik bestera joateko, array bat baino gehiago badituzu, hau da, nola batetik bestera joateko lotuta zerrenda bat baino gehiago. 729 00:56:38,000 --> 00:56:45,000 >> Uneren batean bigarren izaera izan beharko luke. 730 00:56:45,000 --> 00:56:50,000 Kontuan, hau da, ia gauza bera izango da. 731 00:56:50,000 --> 00:56:57,000 Lotutako zerrenda bat baino gehiago batetik bestera joateko nahi duzu. 732 00:56:57,000 --> 00:57:02,000 Nodo-I ez daki zer balio deritzo. 733 00:57:02,000 --> 00:57:04,000 Nodoa i. 734 00:57:04,000 --> 00:57:15,000 Nodo hartan balioa = Egia bada itzultzeko i, eta hori da. 735 00:57:15,000 --> 00:57:18,000 Oharra itzultzeko modu bakarra dugu inoiz faltsua 736 00:57:18,000 --> 00:57:23,000 loturiko zerrenda osoa zehar batetik bestera joateko bada, eta inoiz ez itzultzeko egia, 737 00:57:23,000 --> 00:57:29,000 beraz, zer honek. 738 00:57:29,000 --> 00:57:36,000 Bigarren mailako note-Ziurrenik ez get edo erantsi gunearen aurretik. 739 00:57:36,000 --> 00:57:39,000 >> Quick azken oharra. 740 00:57:39,000 --> 00:57:52,000 Ikusiko duzu estatiko keyword bada, eta, beraz, demagun static int Aldaketa = 0, 741 00:57:52,000 --> 00:57:56,000 ondoren Aldaketa egiten dugu + +, funtsean dezakezu pentsatu aldagai global gisa, 742 00:57:56,000 --> 00:58:00,000 nahiz eta esan dut hori ez da nola luzera ezartzeko goaz. 743 00:58:00,000 --> 00:58:06,000 Naiz egiten hemen, eta, ondoren, + + zenbatzea. 744 00:58:06,000 --> 00:58:11,000 Inola ere gure zerrendan lotutako gure Aldaketa ari gara incrementing nodo bat sartu ahal izango dugu. 745 00:58:11,000 --> 00:58:15,000 Puntua da zer esan nahi du estatiko keyword. 746 00:58:15,000 --> 00:58:20,000 Besterik ez bada nuen int Aldaketa 0 = erregularra global aldagai zaharra izango litzateke. 747 00:58:20,000 --> 00:58:25,000 Zer static int Aldaketa bitarteko dela, fitxategi hau aldagai global bat da. 748 00:58:25,000 --> 00:58:28,000 Fitxategi batzuk ezinezkoa da, 749 00:58:28,000 --> 00:58:34,000 pset 5 uste duzu hasi baldin badaude. 750 00:58:34,000 --> 00:58:39,000 Estrategia bi daukazu, eta duzu dictionary.c, 751 00:58:39,000 --> 00:58:42,000 eta gauza global bat besterik ez duzu deklaratzen bada, eta gero ezer estrategia 752 00:58:42,000 --> 00:58:45,000 dictionary.c eta alderantziz eskura daiteke. 753 00:58:45,000 --> 00:58:48,000 Global aldagaiak dira edozein. C fitxategia eskuragarri, 754 00:58:48,000 --> 00:58:54,000 baina aldagai estatikoak bakarrik fitxategia barruan eskuragarri daude, 755 00:58:54,000 --> 00:59:01,000 beraz barruan spell checker edo barruan dictionary.c, 756 00:59:01,000 --> 00:59:06,000 hau da nire aldagaia deklaratzeko nuke nire array tamaina mota 757 00:59:06,000 --> 00:59:10,000 edo nire hitzak hiztegian kopurua tamaina. 758 00:59:10,000 --> 00:59:15,000 Edozeinek sartzeko global aldagai bat aldarrikatu nahi ez dut ez denez, 759 00:59:15,000 --> 00:59:18,000 Buruz benetan bakarrik zait nire helburu propioa. 760 00:59:18,000 --> 00:59:21,000 >> Honi buruz gauza ona da, halaber, izen osoa talka stuff. 761 00:59:21,000 --> 00:59:27,000 Beste fitxategi batzuk saiatzen izeneko Aldaketa aldagai global bat erabili nahi izanez gero, gauzak oso oker, 762 00:59:27,000 --> 00:59:33,000 beraz, hau nicely mantentzen gauza segurua, eta bakarrik sartu ahal izango duzu, 763 00:59:33,000 --> 00:59:38,000 eta inork ez bestela, eta beste norbaitek deitzen Aldaketa global aldagai bat adierazten bada, 764 00:59:38,000 --> 00:59:43,000 gero, ez da zure aldagai estatikoak izeneko Aldaketa oztopatzeko. 765 00:59:43,000 --> 00:59:47,000 Hori zer estatikoak da. Fitxategia aldagai global bat da. 766 00:59:47,000 --> 00:59:52,000 >> Ezer galderak? 767 00:59:52,000 --> 00:59:59,000 Multzo guztiak. Bye. 768 00:59:59,000 --> 01:00:03,000 [CS50.TV]