Menu
Coddy logo textTech
Percorso di apprendimento

Algoritmi e strutture dati in C++

La STL è questo percorso in forma di libreria: std::vector, std::unordered_map, std::priority_queue e std::set sono un array dinamico, una tabella hash, un heap e un albero bilanciato. Costruisci ognuno in C++ con classi e puntatori, poi usa la STL sapendo quanto costa ogni chiamata. La manipolazione dei bit si studia direttamente in C++. Gratis, nel browser, con un certificato nella maggior parte dei corsi.

394 lezioni228 sfide702 domande del quiz

Algoritmi e strutture dati in C++, passo dopo passo

39 corsi394 lezioni228 sfide702 domande del quiz

Ogni passaggio è un insieme di corsi Coddy già esistenti, e ogni pulsante Inizia li apre in C++. I due corsi non ancora insegnati in C++ sono elencati dopo i passaggi.

  1. 1
    Inizia questo passoIniziaPila, coda, albero binario, tabella hash e lista concatenata, ognuno costruito da zero in C++ con classi e puntatori, poi usato per risolvere problemi. Alla fine, std::stack, std::queue e std::unordered_map sono strutture che hai scritto tu.Inizia
  2. 2
    Inizia questo passoIniziaLista doppiamente concatenata, heap e code di priorità, trie, grafi e l'albero AVL autobilanciato. std::priority_queue è un max-heap per impostazione predefinita, mentre gli heap di Python e Java sono min-heap; una volta che ne hai scritto uno, invertirlo con std::greater è ovvio.Inizia
  3. 3
    Inizia questo passoIniziaBubble sort, selection, insertion, merge, quick, heap, counting e radix sort, scritti in C++ e osservati nel visualizzatore. std::sort di solito è un introsort, un quicksort che ripiega sull'heapsort, e std::stable_sort un merge sort; questo passaggio spiega il perché di queste scelte.Inizia
  4. 4
    Inizia questo passoIniziaSfide di ricorsione e manipolazione dei bit, entrambe in C++, il linguaggio per cui è scritto il corso sulla manipolazione dei bit. La programmazione dinamica è insegnata in Python ed elencata dopo i passaggi; le sue tabelle di memoizzazione si traducono direttamente in std::vector.Inizia
  5. 5
    Inizia questo passoIniziaRicerca in ampiezza e in profondità, Dijkstra, Bellman-Ford, ordinamento topologico, Kruskal e Prim in C++, sul grafo che hai costruito nel secondo passaggio. La coda di priorità di Dijkstra è std::priority_queue con std::greater: l'heap del secondo passaggio, in forma di libreria.Inizia
  6. 6
Cosa ottieni
Tutto ciò che userai per imparare a programmare

Impara facendo

Scrivi codice vero, interroga database, crea siti web e padroneggia i prompt per l'AI. Le nostre lezioni interattive coprono tutte le competenze di cui ha bisogno uno sviluppatore moderno.

playground.js
Editor di codice
1const greeting = "Hello, Coddy!"
2function sayHi(name) {
3    return greeting + " " + name
4}
5
bottombar Collapse icon
Test #1test Case Success icon
Test #2test Case Success icon
Test #3test Case Failure icon
Input
"Alex"
Output
"Hello, Coddy! Alex"

Costruisci la tua serie

Sii costante e guarda crescere i tuoi progressi! Tieni traccia della tua abitudine quotidiana di programmare, proteggi la tua serie con i giorni di congelamento e guadagna ricompense ogni giorno che ti presenti.

12 giorni di serie

Torna domani per mantenere la tua serie!

fire Filled icon
left icon

January 2026

right icon

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

21

22

23

24

25

26

27

28

29

30

product Double Or Nothing icon

Lascia o raddoppia

Giorno 5 di 7

fire Freeze icon

Congela serie

2 left

Programma ovunque

Porta il tuo percorso di programmazione sempre con te! Niente configurazioni, niente download: apri l'app e inizia a programmare. Disponibile su iOS, Android e Web con valutazioni di 4,9 stelle.

Python
7Serie
250Punteggio
5Energia
Variabili
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Right Done icon
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Left Done icon
journey Hex Active Base iconjourney Hex Active Shadow iconjourney Hex Active Top iconjourney Lesson Theory Challenge icon
CONTINUA
journey Path Right icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson Theory Challenge icon
journey Path Left icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson All icon
Percorso
Obiettivi
Classifica
Profilo
4.9
StellaStellaStellaStellaStella
Valutazione

Non sei solo

Competi nelle classifiche globali, invita gli amici per guadagnare ricompense e festeggiate insieme i vostri successi. Programmare è più bello con gli amici!

Lega Sfidante
Lega SfidanteI primi 7 avanzano
leaderboard First icon1
avatar 1 icon
fire Filled icon
Alex7+ Days
2840
leaderboard Second icon2
avatar 2 icon
fire Filled icon
Jordan7+ Days
2650
leaderboard Third icon3
avatar 3 icon
fire Filled icon
Sam7+ Days
2420
4
avatar 4 icon
Casey
2180
5
avatar placeholder icon
fire Filled icon
Morgan7+ Days
1950
leaderboard Arrow Up iconZona promozioneleaderboard Arrow Up icon

Tutti i modi per imparare

Leggi, ascolta, mettiti alla prova, chiedi all'AI o ripassa qualsiasi cosa tu abbia già visto. Ogni lezione si adatta a te.

Introduzione alle variabili
Audio

Una variabile è un contenitore con un nome che memorizza un valore a cui puoi fare riferimento più avanti nel programma.

In Python la crei scrivendo il nome, un segno di uguale e poi il valore che vuoi memorizzare.

Il valore può cambiare nel tempo: riassegnare il nome lo fa semplicemente puntare a un nuovo valore.

1xSarah

Ottieni un certificato

Ottieni un certificato per ogni corso che completi. Aggiungilo al tuo profilo LinkedIn e al curriculum per mostrare ai datori di lavoro le tue competenze di programmazione.

CoddyCertificato di completamento
Si certifica cheMario Rossiha completato con successo
python iconFondamenti di Python
Verificato
Datagen 2026
LinkedInAggiungi a LinkedIn

Perché imparare algoritmi e strutture dati in C++ su Coddy

  • Il linguaggio della programmazione competitiva. La maggior parte dei programmatori competitivi scrive in C++, per la velocità e la STL, ed è accettato in quasi ogni colloquio tecnico. Imparare algoritmi e strutture dati in C++ significa imparare il dialetto in cui si scrivono le gare.
  • Puntatori che puoi vedere. Una lista concatenata in C++ è fatta di nodi e puntatori, una rotazione AVL è una manciata di spostamenti di puntatori e un distruttore libera ciò che hai allocato. Impari le strutture come le memorizza la macchina, poi lasci che sia la STL a farlo per te.
  • La manipolazione dei bit nel suo linguaggio. Il corso sulla manipolazione dei bit del percorso è insegnato in C++, quindi qui non è una deviazione: maschere, shift e trucchi sui bit arrivano nel linguaggio che stai già scrivendo. Fanno eccezione solo la programmazione dinamica e la serie di colloqui in Python: sono insegnate in Python ed elencate dopo i passaggi.
  • Valutato come in un colloquio. Ogni lezione termina con una sfida in C++ verificata da casi di test, e quando una fallisce, Bugsy legge il tuo codice e ti indirizza verso la correzione senza darti la risposta. Un certificato gratuito nella maggior parte dei corsi, ognuno verificabile al proprio URL.

Domande frequenti su algoritmi e strutture dati in C++

Il C++ va bene per algoritmi e strutture dati?

È la scelta più comune nella programmazione competitiva e una scelta solida per i colloqui: veloce, con una libreria standard che copre quasi ogni struttura che ti serve. Il prezzo è più codice e più modi di sbagliare, dai puntatori pendenti agli iteratori invalidati. Costruire prima le strutture da te, come fa questo percorso, è il modo per non farti più sorprendere.

Quali container della STL corrispondono a quali strutture dati?

std::vector è un array dinamico, std::stack e std::queue sono adattatori che per impostazione predefinita poggiano su std::deque, std::list è una lista doppiamente concatenata, std::unordered_map e std::unordered_set sono tabelle hash, std::priority_queue è un heap binario (un max-heap per impostazione predefinita, a differenza di quelli di Python e Java), e std::map e std::set sono alberi binari di ricerca bilanciati, in pratica alberi rosso-neri. Non esiste un container per trie o grafi; quelli li scrivi tu.

Devo implementare le strutture dati da solo o usare direttamente la STL?

Entrambe le cose, in quest'ordine. Implementa ogni struttura una volta, così sai perché le ricerche in std::unordered_map richiedono in media tempo costante e perché std::map mantiene le chiavi ordinate, poi usa la STL ovunque. In una gara o in un colloquio nessuno si aspetta un albero rosso-nero scritto a mano; si aspettano che tu scelga il container giusto e ne conosca il costo.

C++ o Python per algoritmi e strutture dati?

C++ se vuoi fare programmazione competitiva o sostenere colloqui dove è richiesto; Python se vuoi la strada più breve dall'idea al codice funzionante. Gli algoritmi sono identici, per questo molti imparano con uno e gareggiano con l'altro. Ogni corso sulle strutture dati di questo percorso è insegnato in entrambi.

Quali corsi di questo percorso non sono insegnati in C++?

Due: la programmazione dinamica e la serie di colloqui in Python, entrambi insegnati in Python. Sono elencati dopo i passaggi, con un link che li apre in Python. Le idee si trasferiscono senza modifiche: in C++ una tabella di memoizzazione è un std::vector o una std::unordered_map.

Devo conoscere il C++ prima di iniziare questo percorso?

Almeno classi, puntatori, riferimenti e std::vector. Se sono argomenti nuovi, il corso di C++ di Coddy li copre prima, gratis, e questo percorso riprende da dove finisce.

Altri percorsi di apprendimento

Gli stessi corsi, organizzati per un ruolo diverso. I progressi si mantengono: un corso completato in un percorso vale per ogni percorso che lo include.

Tutti i percorsi di apprendimento
Illustrazione dei linguaggi di programmazione di Coddy

Inizia gratis il percorso Algoritmi e strutture dati

Inizia a imparare