Vector vs List
Vektory a seznamy jsou často matoucí pro programátory, jsou sekvence používané v polích v C ++ a Java. Dva termíny obsahují adresy pole, ale s různými metodami držení polí.
Základní věc, kterou musíme vědět, je, že pole je „seznam“, který obsahuje některá nebo všechna data, tj. Celá čísla, pohyblivé body nebo znaky, a je definován v závorkách „[]“.
Ve skutečnosti se vektory a seznamy chovají podle instancí. Pojďme se tedy na tyto dva termíny podívat jeden po druhém.
Vektory
Vektory se používají v držení pole a přístupu k prvkům. Zde můžete k libovolnému prvku přistupovat náhodně pomocí operátoru „[]“. Je tedy snadné prohlédnout si všechny prvky nebo jeden konkrétní prvek pomocí vektorové operace. Pokud tedy vložíte jakýkoli objekt na konec, na začátek nebo do středu, vektory mají kladný bod, protože můžete přistupovat k náhodné adrese a provádět tam změny. Ve srovnání s objekty seznamu jsou však vektory trochu pomalé. Vektory jsou považovány za synchronizované objekty, efektivní v náhodném přístupu a správně drží data se synchronizovaným seznamem. Vektor je vybrán vždy, když není třeba vkládat nebo mazat
uprostřed (seznam) nebo zepředu.
Počet prvků v poli se může dramaticky lišit.
Příklad:
vektor V;
V.insert (V.begin (), 3);
prosadit (V.size () == 1 && V.capacity ()> = 1 && V [0] == 3);
Seznamy
Seznamy jsou „dvojitě propojené sekvence“ podporující dopředný i zpětný průchod. Čas potřebný pro vložení a odstranění na začátku, na konci a uprostřed je konstantní. Vkládání a sestřih mezi propojenými seznamy nezbavuje žádnou iteraci v elementech. Pouze odstranění zneplatní iteraci. Nejsou synchronizovány, takže nejsou přístupné náhodně. Pořadí iterací se může měnit podle uživatele, ale neovlivní to žádné změny v prvcích. Jsou rychlejší než vektory a jsou ideální pro vložení a odstranění na začátku, uprostřed a na konci seznamů prvků.
Příklad:
#zahrnout
// seznam definice třídy-šablony
… .
int main ()
int pole [4] = 2, 6, 4, 8;
std :: list value;
std :: list otherValues;
Souhrn:
1. Seznam není synchronizován, zatímco je vektor.
2. Seznamy nemají žádnou výchozí velikost, zatímco vektor má výchozí velikost 10.
3. Seznamy a vektory jsou dynamicky rostoucí pole.
4. Seznam není bezpečný pro vlákno, zatímco vektor je bezpečný pro vlákno.
5. Seznamy, protože se vztahují pouze na přidávání a mazání vpředu a vzadu, jsou rychlejší
vektory zabírají více CPU.
6. Vektor roste svou velikostí dvakrát, zatímco seznam klesá na polovinu, tj. 50%.