Originariamente inviato da shodan
Si, perché 26 sono le lettere dell'alfabeto. ma non centra se inserisci una stringa o un carattere: l'algoritmo è lo stesso perché si parla di un generico elemento.
Se inserisci "abracadabra" (in caratteri singoli) il set si comporta così:
inserisce a, inserisce b, inserisce r, scarta a perché c'è già, inserisce c, scarta a perché c'è già, inserisce d, scarta a perché c'è già...

Alla fine il set conterrà (in caratteri): abrcd

Se inserisci "192.168.1.100", "192.168.1.200","10.0.0.1","192.168.1.100"; il set conterrà solo il primi tre dal momento che il quarto lo trova già, ragione per cui il tuo if è sempre vero.
La cosa si applica anche alla map (che contiene coppie tipo: chiave - dato), tenendo presente che se durante l'inserimento viene rilevata una chiave doppia, la coppia viene scartata.
Il succo del discorso è che sia set sia map garantiscono l'univocità dei dati inseriti.
E questo è male! Devo rivederlo. Ho provato anche con il size prima e dopo l'insert, e poi confrontando i due valori, ma ovviamente, come dici tu, la situazione non cambia.

@MItaly: per brevità non ho postato come ho preso gli indirizzi, comunque la libreria pcap e li mappo in un array, tutto in automatico, quindi la formattazione è sempre la stessa (8 coppie di numeri esadecimali, 4 sorgente e 4 destinazione). Mi serve metterle così perché le uso per calcolarmi l'HMAC del pacchetto da usare come chiave per criptare lo stesso.
La parte del sapere se il pacchetto appartiene ad un flusso noto o meno è perché ho bisogno di sapere se devo mandare dei dati o no.

Cmq grazie a tutti. Ora cercherò di risolvere il problema di come fare a sapere se il dato era presente o è stato inserito.