Grazie shodan.
Allora ho provato a leggere il link che hai postato, ma per ora ci ho capito poco, magari domani con la mente più lucida lo capirò meglio.
Intanto ho provato la soluzione da te suggeritami, al posto di FLOWID ho messo string, e in effetti gli errori si sono ridotti:
Alla riga 178 c'è l'if.main.cpp: In function 'int main(int, char**)':
main.cpp: 178: error: no matching function for call to 'std::set<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >::end(char [8])' /usr/lib/gcc/i686-pc-linux-gnu/4.4.4/include/g++-v4/bits/stl_set.h:300: note: candidates are: typename std::_Rb_tree<_Key, _Key, std::_Identity<_Key>, _Compare, typename _Alloc::rebind<_Key>:ther>::const_iterator std::set<_Key, _Compare, _Alloc>::end() const [with _Key = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _Compare = std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, _Alloc = std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]
make: *** [main.o] Error 1
Io ho messo l'if così perché a quanto mi risulta il find punta all'elemento, se lo trova, altrimenti punta ad un elemento successivo all'ultimo, che ovviamente non esiste, e quindi scrivendo in quel modo l'if, è come se scrivessi: "Se l'elemento non esiste fai questo, altrimenti fai quest'altro".
Ho sbagliato anche quello?
EDIT: mi accorgo ora che ho sbagliato una parte del codice, la riposto qui perché non posso editare il primo messaggio:
codice:#include <set> #include <iostream> #include <string> #include <iterator> using namespace std; typedef char FLOWID 8 typedef set < string > IDF; FLOWID fid; int main() { fid = indirizzi_ip; IDF idflow; if(idflow.find(fid) == idflow.end(fid)) { printf("L'indirizzo è nuovo ed è stato inserito nella lista.\n"); idflow.insert(fid); } else printf("L'indirizzo è già presente nella lista.\n"); exit(0) }