Πρότυπα ΙωάννηςΓºΤσούλος ¾¼ ½ Συναρτήσειςπροτύπων Μετιςσυναρτήσειςπροτύπωνμπορούμενακάνουμεσυναρτήσειςοιοποίεςεκτελούντονίδιοκώδικα γιαδιαφορετικούςτύπουςδεδομένων όπωςπαρουσιάζεται καιστοεπόμενοπαράδειγμαºοιδηλώσειςσυναρτήσεωνμετηνχρήση ØÑÔØ πρέπειναγίνεταιαμέσωςκάτωαπότηνκεντρικήδήλωση ØÑÔØº ½ ÒÙ Ó ØÖÑ ¾ Ù Ò ÒÑ Ô Ø ØÑÔØØÝÔÒÑ ØÝÔ ØÝÔ ÑÜÚÙ ØÝÔ ØÝÔ µ µ ÖØÙÖÒ ÖØÙÖÒ ÒØ ÑÒ µ ½¼ ½½ ÒØ ܽ¼¼ ݾ¼¼ ½¾ ÓÙ ¾¼¼º¾ º ½ ÒØ ÑÜÑÜÚÙ Ü Ý µ ÓÙ ÑÜÑÜÚÙ µ ÓÙØÅÜÑÜÒ ÓÙØÅÜÑÜÒ ÖØÙÖÒ ¼ Εκτόςαπόένα ØÑÔØμπορούμεναχρησιμοποιήσουμεδύοπρότυπαστηνίδια συνάρτηση όπωςπαρουσιάζεταικαιστοεπόμενοπαράδειγμα ½ ÒÙ Ó ØÖÑ ¾ Ù Ò ÒÑ Ô Ø ØÑÔØØÝÔÒÑ ØÝÔ½ ØÝÔÒÑ ØÝÔ ÓÙ ÑÙØ ØÝÔ½ ØÝÔ¾ µ ÖØÙÖÒ ½
ØÑÔØØÝÔÒÑ ØÝÔ½ ØÝÔÒÑ ØÝÔ ½¼ ÓÙ Ú ØÝÔ½ ØÝÔ¾ µ ½½ ½¾ ÖØÙÖÒ» ½ ÒØ ÑÒ µ ÒØ ܽ¼¼ ݾ¼¼ ÓÙ ¾¼¼º¾ º ÓÙ Ú ÑÙØ Ü Ý µ ¾¼ ÓÙ Ú Ú µ ÓÙØ ÎÙÚÒ ¾¾ ÓÙØ ÎÙÚÒ ¾ ÖØÙÖÒ ¼ ¾ Κατηγορίες προτύπων Ταπρότυπαμπορούνναχρησιμοποιηθούνκαισεκατηγορίες οιοποίεςθαέχουν γενικόκώδικαόπωςπαρουσιάζεταικαιπαρακάτω στηνγενικήκατηγορίαδυναμικού πίνακα ½ ÒÙ Ó ØÖÑ ¾ Ù Ò ÒÑ Ô Ø ØÑÔØØÝÔÒÑ Ì ÖÖÝ ÔÖÚØ ÒØ Ò Ø Ì Ø ½¼ ÔÙ ½½ ÖÖÝ µ ½¾ ÖÖÝ ÒØ Ò µ ½ ÖÖÝ µ ̲ ÓÔÖØÓÖ ÒØ ÒÁÒÜ µ ÒØ ØÄÒØ µ ØÑÔØ ØÝÔÒÑ Ì ÖÖÝÌ ÖÖÝ µ ¾¼ ØÒÛ Ì ½ ¾
¾¾ Ò Ø ¾ ØÑÔØØÝÔÒÑ Ì ÖÖÝÌ ÖÖÝ ÒØ Ò µ ØÒÛ Ì Ò Ò Ø Ò ¼ ½ ¾ ØÑÔØØÝÔÒÑ Ì ÖÖÝÌ ÖÖÝ µ Ø Ø ØÑÔØØÝÔÒÑ Ì Ì² ÖÖÝÌ ÓÔÖØÓÖ ÒØ ÒÁÒÜ µ ¼ ½ ÖØÙÖÒ Ø ÒÁÒÜ ¾ ØÑÔØØÝÔÒÑ Ì ÒØ ÖÖÝÌ ØÄÒØ µ ÖØÙÖÒ Ò Ø ÒØ ÑÒ µ ÖÖÝÒØ ÒÖÖÝ µ ÖÖÝÓÙ ÖÖÝ µ ¼ ÓÖ ÒØ ¼ µ ½ ¾ ÒÖÖÝ ÖÖÝ ¼ º ÓÖ ÒØ ÒÓÙÒØ ÒÓÙÒØ ¼ ÒÓÙÒØ µ ÓÙØ ÒÖÖÝ ÒÓÙÒØ Ø ÖÖÝ ÒÓÙÒØ Ò ÖØÙÖÒ ¼ Επειδήησυνεχήςδήλωσωπροτύπωνμπορείναείναικουραστική πριναπότις μεθόδουςδηλαδήµυπάρχεικαιοεπόμενοςπιοεύκολοςτρόποςδήλωσηςκατηγορίας προτύπων ½ ÒÙ Ó ØÖÑ ¾ Ù Ò ÒÑ Ô Ø ØÑÔØØÝÔÒÑ Ì ÖÖÝ
ÔÖÚØ ÒØ Ò Ø Ì Ø ½¼ ÔÙ ½½ ÖÖÝ µ ½¾ ½ ØÒÛ Ì ½ Ò Ø ÖÖÝ ÒØ Ò µ ØÒÛ Ì Ò ¾¼ Ò Ø Ò ¾¾ ¾ ÖÖÝ µ Ø Ø Ì² ÓÔÖØÓÖ ÒØ ÒÁÒÜ µ ¼ ÖØÙÖÒ Ø ÒÁÒÜ ½ ¾ ÒØ ØÄÒØ µ ÖØÙÖÒ Ò Ø ¼ ÒØ ÑÒ µ ½ ¾ ÖÖÝÒØ ÒÖÖÝ µ ÖÖÝÓÙ ÖÖÝ µ ÓÖ ÒØ ¼ µ ÒÖÖÝ ÖÖÝ ¼ º ¼ ÓÖ ÒØ ÒÓÙÒØ ÒÓÙÒØ ¼ ÒÓÙÒØ µ
½ ÓÙØ ÒÖÖÝ ÒÓÙÒØ Ø ÖÖÝ ÒÓÙÒØ Ò ¾ ÖØÙÖÒ ¼ Δυναμικοί πίνακες º½ Ορισμόςπινάκων Εξαιτίαςτηςευρύτατηςχρήσεωςδυναμικώνπινάκωνκαιάλλωνδομών στηνσύγχρονη υπάρχειμια πληθώρααπό τέτοιεςδομές σε έναπακέτοπουονομάζεται ËÌĺΣτηνσυνέχειαπαρουσιάζονταιμερικέςαπότιςδομέςαυτέςº Στοεπόμενο παράδειγμαδημιουργείταιέναςπίνακας στοιχείωνκαιαποθηκεύουμεσεαυτόν τιμέςκαιεμφανίζεταιομέσοςόροςτουςº ½ ÒÙ Ó ØÖÑ ¾ ÒÙ ÚØÓÖ Ù Ò ÒÑ Ô Ø ÒØ ÑÒ µ ÚØÓÖ ÒØ Ü µ ÒØ ½¼ ÓÙ ÑÒ ¼º¼ ½½ ÓÖ ¼ Ü º Þ µ µ ½¾ ½ ÓÙØ ÒØÖ Ü Ø ÔÓ Ò Ò Ü ÑÒÑÒ Ü ÑÒÑÒ»Ü º Þ µ ÓÙØÅÒ Ú Ù ÑÒÒ ÖØÙÖÒ ¼ ¾¼ º¾ Δυναμικήεισαγωγήστοιχείων Προφανώςμπορείναδημιουργηθείκαιπίνακαςοοποίοςαυξομειώνειτηνδιάσταση ενόςπίνακα όπωςστοεπόμενοπαράδειγμαόπουεισάγονταιτιμέςθερμοκρασίες σεπίνακαº Ηείσοδοςτιμώντερματίζεταιότανοχρήστηςεισάγειτιμήκάτωαπό τοαπόλυτο ¼ ¹ ºβαθμοίκελσίουµº ½ ÒÙ Ó ØÖÑ ¾ ÒÙ ÚØÓÖ Ò ÅÁÆÌÅÈ º
Ù Ò ÒÑ Ô Ø ÒØ ÑÒ µ ÚØÓÖ ÓÙ ØÑÔ ½¼ ÓÙ Ú Ù ½½ ÒØ ½¾ Ó ½ ÓÙØ ÒØÖ ØÑÔÖØÙÖ ÎÙÅÁÆÌÅÈ Ø Ö Ñ Ò Ø Ø ÔÔÒ Ò Ú Ù ÚÙÅÁÆÌÅȵ Ö ØÑÔ º ÔÙ Ú Ù µ Û ØÖÙ µ ¾¼ ÓÖ ¼ ØÑÔ º Þ µ µ ¾¾ ÓÙØÌÑÔØÑÔ Ò ¾ ÖØÙÖÒ ¼ º Πίνακες αλφαριθμητικών ΟιδυναμικοίπίνακεςμπορούνναχρησιμοποιηθούνκαιστηνπερίπτωσηαλφαριθμητικώνºΣτοεπόμενοπαράδειγμαχρησιμοποιούνταιδύοδυναμικοίπίνακεςένας για τα ονόματα υπαλλήλων και ένας για τις αμοιβές τουςº Το πρόγραμμα εμφανίζει τονυπάλληλοπουλαμβάνειτονμεγαλύτερομισθό ½ ÒÙ Ó ØÖÑ ¾ ÒÙ ÚØÓÖ ÒÙ Ø Ö Ò Ù Ò ÒÑ Ô Ø ÒØ ÑÒ µ ÚØÓÖ Ø Ö Ò ÒÑ ÚØÓÖ ÒØ Ö Ý ½¼ ÒØ ½½ Ø Ö Ò ÑÜÒÑ ½¾ ÒØ ÑÜ ÖÝ ½ ÓÖ ¼ µ Ø Ö Ò Ò ÒØ ÓÙØ ÒØÖ ÒÑ Ò Ò Ò
ÓÙØ ÒØÖ Ö Ý Ò ¾¼ Ò ÒÑ º ÔÙ Ò µ ¾¾ Ö Ý º ÔÙ µ ¾ ÑÜÒÑÒÑ ¼ ÑÜ ÖÝ Ö Ý ¼ ÓÖ ¼ µ Ö Ý ÑÜ ÖÝ µ ¼ ÑÜ ÖÝ Ö Ý ½ ÑÜÒÑÒÑ ¾ ÓÙØÅÜ Ö Ý ÑÜ ÖÝÒ ÓÙØÅÜÒÑÑÜÒÑÒ ÖØÙÖÒ ¼ º Πίνακεςαντικειμένων ½ ÒÙ Ó ØÖÑ ¾ ÒÙ ÚØÓÖ ÒÙ Ø Ö Ò Ù Ò ÒÑ Ô Ø ÈÖ ÓÒ ÔÖÚØ Ø Ö Ò ÒÑ ØÒÑ ½¼ ÔÙ ½½ ÈÖ ÓÒ µ ½¾ ÈÖ ÓÒ Ø Ö Ò Ò Ø Ö Ò µ ½ ÚÓ Ø µ ÈÖ ÓÒ ÈÖ ÓÒ µ ÒÑ ØÒÑ ¾¼ ¾¾ ÈÖ ÓÒ ÈÖ ÓÒ Ø Ö Ò Ò Ø Ö Ò µ ¾
ÒÑÒ ØÒÑ ÚÓ ÈÖ ÓÒ Ø µ ¼ ÓÙØÆÑ ÒÑÄ ØÒÑ ØÒÑÒ ½ ¾ ÒØ ÑÒ µ ÚØÓÖ ÈÖ ÓÒ Ô Ó Ô ÒØ ÓÖ ¼ µ ÈÖ ÓÒ Ô ¼ Ø Ö Ò Ò ½ ÓÙØ ÒØÖ ÒÑÒ ¾ Ò Ò ÓÙØ ÒØÖ ØÒÑ Ò Ò ÔÒÛ ÈÖ ÓÒ Ò µ Ô Ó Ô º ÔÙ Ô µ ÓÖ ¼ µ Ô Ó Ô Ø µ ÓÖ ¼ µ Ø Ô Ó Ô ¼ ÖØÙÖÒ ¼ ½ º Διαγραφήκαιπαρεμβολήστοιχείων ½ ÒÙ ÚØÓÖ ¾ ÒÙ Ó ØÖÑ ÒÙ Ø º ÒÙ Ý» ØÑ º Ù Ò ÒÑ Ô Ø ÚÓ Ô Ö Ò Ø Ú Ø Ó Ö ÚØÓÖ ÒØ Ü µ ÚØÓÖ ÒØ Ø Ö Ø Ó Ö Ø Ö ½¼ ÓÖ Ø ÖÜ º Ò µ Ø Ö Ü º Ò µ Ø Ö µ ½½ ÓÙØÜ Ø Ö Ò ½¾ ½ ÚÓ Ø Ú Ø Ó Ö ÚØÓÖ ÒØ ²Ü µ
ÚØÓÖ ÒØ Ø Ö Ø Ó Ö Ø Ö Ø ÖÜ º Ò µ Û Ø Ö Ü º Ò µ µ ¾¼ ÒØ Ú Ø Ö Ú±¼µ ¾¾ Ü º Ö Ø Ö µ ¾ Ø Ö ÒØ ÑÒ µ ¼ ÚØÓÖ ÒØ Ü ½ ÒØ ¾ ÖÒ ØÑ ÆÍÄÄ µ µ ÓÖ ¼ ½¼ µ Ü º ÔÙ ÖÒ µ ± ½ ¼ µ Ø Ú Ø Ó Ö Ü µ Ô Ö Ò Ø Ú Ø Ó Ö Ü µ ÖØÙÖÒ ¼ º Διδιάστατοιδυναμικοίπίνακες ½ ÒÙ ÚØÓÖ ¾ ÒÙ Ó ØÖÑ Ù Ò ÒÑ Ô Ø ØÝÔ ÚØÓÖ ÓÙ Ø ÚÓ ÑÅØÖÜ ÚØÓÖ Ø ² ÒØ ÖÓÛ ÒØ ÓÙÑÒ µ ÒØ º Ö Þ ÖÓÛ µ ½¼ ÓÖ ¼ ÖÓÛ µ ½½ º Ö Þ ÓÙÑÒ µ ½¾ ½ ÚÓ ÖÅØÖÜ ÚØÓÖ Ø ²µ ÒØ ÓÖ ¼ º Þ µ µ ÓÖ ¼ º Þ µ µ
¾¼ ÓÙØ ¾¾ Ò ¾ ÚÓ Ô Ö Ò Ø Å Ø Ö Ü ÚØÓÖ Ø µ ÒØ ¼ ÓÖ ¼ º Þ µ µ ½ ¾ ÓÖ ¼ º Þ µ µ ÓÙØ ÓÙØÒ ¼ ÚÓ ÑÙØÅØÖÜ ÚØÓÖ Ø ² ÚØÓÖ Ø ² ÚØÓÖ Ø ²µ ½ ¾ ÒØ ÓÖ ¼ º Þ µ µ ÓÖ ¼ º Þ µ µ ¼ ÓÖ ¼ º Þ µ µ ¼ ½ ¾ ÒØ ÑÒ µ ÒØ Å Æ ÚØÓÖ Ø ÓÙØÀÓÛÑÒÝ ÖÓÛ ÒÅ ¼ ÓÙØÀÓÛÑÒÝ ÓÙÑÒ ½ ÒÆ ¾ ÑÅØÖÜ Å Æµ ÑÅØÖÜ Æ Åµ ÑÅØÖÜ Å Åµ ÖÅØÖÜ µ ½¼
ÖÅØÖÜ µ ÑÙØÅØÖÜ µ Ô Ö Ò Ø Å Ø Ö Ü µ ÖØÙÖÒ ¼ ¼ º ÈÖÑÙØØÓÒ ½ ÒÙ Ø º ¾ ÒÙ Ý» ØÑ º ÒÙ ÚØÓÖ ÒÙ Ó ØÖÑ Ù Ò ÒÑ Ô Ø ÚÓ ÑÈÖÑÙØØÓÒ ÚØÓÖ ÒØ ²Ô µ ÒØ ½¼ ÓÖ ¼ Ô º Þ µ µ ½½ Ô ½¾ ÓÖ ¼ Ô º Þ µ µ ½ ÒØ ÔÓ ÖÒ µ ± Ô º Þ µ ÒØ ÔÓ ÖÒ µ ± Ô º Þ µ ÒØ ØÔ ÔÓ ½ Ô ÔÓ ½ Ô ÔÓ ¾ Ô ÔÓ ¾ Ø ¾¼ ÚÓ ÔÖÒØÈÖÑÙØØÓÒ ÚØÓÖ ÒØ Ô µ ¾¾ ¾ ÒØ ÓÖ ¼ Ô º Þ µ µ ÓÙØÔ ÓÙØÒ ÒØ ÑÒ µ ¼ ½ ÒØ Æ ¾ ÚØÓÖ ÒØ Ô ÓÙØ ÒØÖ Þ Ó ÔÖÑÙØØÓÒ ÒÆ Ô º Ö Þ Æµ ÖÒ ØÑ ÆÍÄÄ µ µ ÑÈÖÑÙØØÓÒ Ô µ ÔÖÒØÈÖÑÙØØÓÒ Ô µ ½½
ÖØÙÖÒ ¼ ¼ Λίστες Ηεπόμενηαπότιςδεκάδεςδιαθέσιμεςδομέςτου ËÌÄπουθαεξετάσουμεείναι αυτότηςλίσταςº Μεαυτόμπορούμεναδημιουργήσουμεδυναμικέςδομέςστα οποίαπαίζειρόλογιακάθεστοιχείοποιοείναιτοεπόμενοκαιτοπροηγούμενοσε αυτόº º½ Ανάγνωσηστοιχείων ½ ÒÙ Ø ¾ ÒÙ Ó ØÖÑ ÒÙ Ø º ÒÙ Ý» ØÑ º Ù Ò ÒÑ Ô Ø ÚÓ ÓÛÄ Ø Ø ÒØ Ü µ Ø ÒØ Ø Ö Ø Ó Ö Ø Ö ½¼ ÓÖ Ø ÖÜ º Ò µ Ø Ö Ü º Ò µ Ø Ö µ ½½ ½¾ ÒØ Ú Ø Ö ½ ÓÙØ Ú Ù ÚÒ ÒØ ÑÒ µ Ø ÒØ Ü ¾¼ ÒØ ÖÒ ØÑ ÆÍÄÄ µ µ ¾¾ ÓÖ ¼ ½¼ µ ¾ ÒØ ÖÖÒ µ ±¾ Ö¼µ Ü º ÔÙ ÖÓÒØ ½¼¼ ÖÒ µ ± ½ ¼ µ Ü º ÔÙ ¾¼¼ ÖÒ µ ± ½ ¼ µ ¼ ÓÛÄ Ø Ü µ ½ ÖØÙÖÒ ¼ ¾ ½¾
º¾ Ταξινόμηση ½ ÒÙ Ø ¾ ÒÙ Ó ØÖÑ ÒÙ Ø º ÒÙ Ý» ØÑ º Ù Ò ÒÑ Ô Ø ÚÓ ÓÛÄ Ø Ø ÒØ Ü µ Ø ÒØ Ø Ö Ø Ó Ö Ø Ö ½¼ ÓÖ Ø ÖÜ º Ò µ Ø Ö Ü º Ò µ Ø Ö µ ½½ ½¾ ÒØ Ú Ø Ö ½ ÓÙØ Ú Ù ÚÒ ÒØ ÑÒ µ Ø ÒØ Ü ¾¼ ÒØ ÖÒ ØÑ ÆÍÄÄ µ µ ¾¾ ÓÖ ¼ ¾¼ µ ¾ ÒØ ÖÖÒ µ ±¾ Ö¼µ Ü º ÔÙ ÖÓÒØ ½¼¼ ÖÒ µ ± ½ ¼ µ Ü º ÔÙ ½¼¼ ÖÒ µ ± ½ ¼ µ ¼ ÓÙØ Ó Ö Ó Ö Ø Ø Ò ½ ÓÛÄ Ø Ü µ ¾ Ü º Ó Ö Ø µ ÓÙØ Ø Ö Ó Ö Ø Ø Ò ÓÛÄ Ø Ü µ Ü º ÙÒÕÙ µ ÓÙØ Ø Ö ÙÒÕÙ Ø Ò ÓÛÄ Ø Ü µ ÖØÙÖÒ ¼ Χάρτες Ηκατηγορία ÑÔείναιμιααρκετάχρήσιμηκατηγορίαμέσωτηςοποίαςμπορούμε ναχρησιμοποιήσουμεσανδείκτεςστουςπίνακεςακόμακαιστοιχείαταοποίαδεν ½
είναι ακέραιοι αριθμοί όπως για παράδειγμα αλφαριθμητικάº Αυτή η δυνατότητα μοιάζειαρκετάμετιςβάσειςδεδομένων όπουχρησιμοποιούνταικλειδιάγιατην αναφοράσεδεδομέναº ½ ÒÙ ÑÔ ¾ ÒÙ Ø Ö Ò ÒÙ Ó ØÖÑ Ù Ò ÒÑ Ô Ø ÚÓ ÓÛÅÔ ÑÔ Ø Ö Ò Ø Ö Ò Ü µ ÑÔ Ø Ö Ò Ø Ö Ò Ø Ö Ø Ó Ö Ø Ö ÓÖ Ø ÖÜ º Ò µ Ø Ö Ü º Ò µ Ø Ö µ ½¼ ½½ Ø Ö Ò Ø Ý Ø Ö ÓÒ ½¾ ÓÙØ ØÝ Ø Ý Ò ½ ÒØ ÑÒ µ ÑÔ Ø Ö Ò Ø Ö Ò Ô Ø Ô Ø ÀÄÁ ÈÊÇË ¾¼ Ô Ø ÃÇÆÀ ÃÇÆÀ Ô Ø ÀÅÌÀÁ ÎÊÇÁ ¾¾ Ô Ø ÊÃÁ ÌÊÁÈÇÄÀ ¾ ÓÛÅÔ Ô Ø µ ÖØÙÖÒ ¼