Mailinglist Archive: opensuse-programming-de (184 mails)

< Previous Next >
Re: <map> oder doch nicht?
  • From: Bastian Schern <bschern01@xxxxxx>
  • Date: Tue, 28 Oct 2003 16:31:18 +0100
  • Message-id: <3F9E8BC6.5060506@xxxxxx>
Michael Matz schrieb:
[...]

s/typedef// Das ist C++.
Was meinst Du denn damit?

[...]

Du brauchst mind. einen operator< auf dem Indextyp. Sonst kann keine
map<> implementiert werden.
Wie implementiere ich den?

Leider geht das so nicht. Ich bekomme folgende Fehlermeldung:
trafana.cpp|78| error: template-argument `
|| analyzeAllPackets(std::vector<result_t, std::allocator<result_t>
>&)::ltstr'


Diese Funktion z.B existiert in deinem snippet nicht.

Ups!

struct ltstr {
bool operator()( flow_key_t& s1, flow_key_t& s2 ) const
{
return( (s1.src_addr+s1.dst_addr) < (s2.src_addr+s2.dst_addr) );
}
};


Die Frage ist natürlich auch, ob <map> für meinen Anwendungsfall
überhaupt geeignet ist oder ob z.B. eine <hash_map> besser geeignet ist?


<map> ist ISO C++, <hash_map> nicht (macht aber hier nichts aus). <map>
benutzt nen red-black Tree zur Implementierung, <hash_map> ne Hashtabelle.
<hash_map> _koennte_ schneller sein, kommt auf die Hashfunktion und die
Daten an.


Ich denke ich werde so ca. 100000 - 1000000 werte vorhalten müssen.


Sicher, dass du von so vielen unterschiedlichen Leuten connections
bekommst?

Ich will ja nicht meinen eigenen Rechner analysieren, sondern das OC-3 Interface eines großen Internet Provider Routers.

Viele Grüße
Bastian



< Previous Next >
References