Διαφορά μεταξύ διανύσματος και λίστας Διαφορά μεταξύ

Anonim

Vector vs. List

Συχνά προκαλούν σύγχυση στους προγραμματιστές, τους φορείς και τους καταλόγους που χρησιμοποιούνται σε ακολουθίες συστοιχιών σε C ++ και Java. Οι δύο όροι περιέχουν διευθύνσεις συστοιχιών, αλλά με διαφορετικές μεθόδους κράτησης συστοιχιών.

Το βασικό πράγμα που πρέπει να γνωρίζουμε είναι ότι ένας πίνακας είναι ένας "κατάλογος" που περιέχει ορισμένα ή όλα τα δεδομένα, i. μι., ακέραιοι αριθμοί, πλωτά σημεία ή χαρακτήρες και ορίζεται σε αγκύλες "[]. "

Στην πραγματικότητα, οι φορείς και οι λίστες ενεργούν σύμφωνα με τις περιπτώσεις. Ας ρίξουμε μια ματιά σε αυτούς τους δύο όρους μία προς μία.

Διανύσματα

Οι διανύσματα χρησιμοποιούνται σε διατήρηση πίνακα και πρόσβαση στα στοιχεία. Εδώ μπορείτε να έχετε πρόσβαση σε οποιοδήποτε στοιχείο τυχαία χρησιμοποιώντας τον χειριστή "[]". Επομένως, γίνεται εύκολη η αναζήτηση όλων των στοιχείων ή ενός συγκεκριμένου στοιχείου με λειτουργία διανυσμάτων. Επομένως, αν εισάγετε οποιοδήποτε αντικείμενο στο τέλος, στην αρχή ή στη μέση, τότε τα διανύσματα έχουν ένα συν το σημείο επειδή μπορείτε να έχετε πρόσβαση στην τυχαία διεύθυνση και να κάνετε αλλαγές εκεί. Ωστόσο, οι φορείς είναι λίγο αργός σε σύγκριση με τα αντικείμενα λίστας. Οι φορείς θεωρούνται ως συγχρονισμένα αντικείμενα, αποτελεσματικά σε τυχαία πρόσβαση και διατηρούν σωστά τα δεδομένα με μια συγχρονισμένη λίστα. Ένας φορέας επιλέγεται όποτε δεν υπάρχει ανάγκη εισαγωγής ή διαγραφής στο μέσο (λίστα) ή από μπροστά.

Ο αριθμός των στοιχείων ενός πίνακα μπορεί να ποικίλει δραματικά.

Παράδειγμα:

διάνυσμα V;

V. ένθετο (V, αρχίζει (), 3).

επιβεβαιώστε (μέγεθος μεγέθους () == 1 && V. χωρητικότητα ()> = 1 && V [0] == 3);

Λίστες

Οι λίστες είναι "διπλά συνδεδεμένες ακολουθίες" που υποστηρίζουν την μετάβαση προς τα εμπρός και προς τα πίσω. Ο χρόνος που απαιτείται για την εισαγωγή και τη διαγραφή στην αρχή, στο τέλος και στη μέση είναι σταθερός. Η τοποθέτηση και ο συνδυασμός μεταξύ των συνδεδεμένων λιστών δεν ακυρώνουν καμία επανάληψη στα στοιχεία. Μόνο η διαγραφή ακυρώνει την επανάληψη. Δεν συγχρονίζονται έτσι ώστε να μην είναι προσιτά τυχαία. Η σειρά παραλλαγών μπορεί να αλλάξει ανάλογα με τον χρήστη, αλλά δεν επηρεάζει τυχόν αλλαγές στα στοιχεία. Είναι ταχύτεροι από τους φορείς και είναι ιδανικοί για εισαγωγή και διαγραφή στην αρχή, στο μέσο και στο τέλος των λιστών στοιχείων.

Παράδειγμα:

#include

// ορισμός πρότυπου κλάσης

….

int main ()

{ int array [4] = {2, 6, 4, 8}.

std:: τιμές λίστας.

std:: list otherValues;

Περίληψη:

1. Μια λίστα δεν συγχρονίζεται ενώ είναι ένας διανύσματος.

2. Οι λίστες δεν έχουν προεπιλεγμένο μέγεθος ενώ ένα διάνυσμα έχει προεπιλεγμένο μέγεθος 10.

3. Οι λίστες και τα διανύσματα είναι δυναμικά αναπτυσσόμενες συστοιχίες.

4. Μια λίστα δεν είναι ασφαλής ως προς το νήμα ενώ ένα διάνυσμα είναι ασφαλές για τα νήματα.

5. Οι λίστες, καθώς ισχύουν μόνο για την προσθήκη και τη διαγραφή μπροστά και πίσω, είναι ταχύτεροι, ενώ οι φορείς

λαμβάνουν περισσότερη CPU.

6. Ένα διάνυσμα μεγαλώνει κατά το μέγεθος του δύο φορές, ενώ μια λίστα μειώνεται στο μισό, i.μι., 50 τοις εκατό.