Mailinglist Archive: opensuse-programming-de (184 mails)
| < Previous | Next > |
<map> oder doch nicht?
- From: Bastian Schern <bschern01@xxxxxx>
- Date: Tue, 28 Oct 2003 12:26:48 +0100
- Message-id: <3F9E5278.5050602@xxxxxx>
Hallo,
ich habe ein PacketFile (tcpdum, libpcap) und möchte feststellen, wie oft eine bestimmte IP Kombination aufgetreten ist.
Ich habe mir das folgendermaßen gedacht:
//...
typedef struct flow_key_t {
uint32_t src_addr;
uint32_t dst_addr;
};
//...
int main( ... )
{
map<flow_key_t, uint64_t> flow_keys;
for( pkt_num_t i=0; i<total_packets; i++ ) {
pReader.nextPacket();
flow_key_t flow_key = pReader.getFlowKey();
flow_keys[ pReader.getFlowKey() ] += 1;
}
//...
}
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'
|| uses local type `analyzeAllPackets(std::vector<result_t,
|| std::allocator<result_t> >&)::ltstr'
trafana.cpp|78| error: ISO C++ forbids declaration of `flow_keys' with no type
Wie mache ich das am besten und ist <map>?
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?
Ich denke ich werde so ca. 100000 - 1000000 werte vorhalten müssen.
Viele Grüße
Bastian
ich habe ein PacketFile (tcpdum, libpcap) und möchte feststellen, wie oft eine bestimmte IP Kombination aufgetreten ist.
Ich habe mir das folgendermaßen gedacht:
//...
typedef struct flow_key_t {
uint32_t src_addr;
uint32_t dst_addr;
};
//...
int main( ... )
{
map<flow_key_t, uint64_t> flow_keys;
for( pkt_num_t i=0; i<total_packets; i++ ) {
pReader.nextPacket();
flow_key_t flow_key = pReader.getFlowKey();
flow_keys[ pReader.getFlowKey() ] += 1;
}
//...
}
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'
|| uses local type `analyzeAllPackets(std::vector<result_t,
|| std::allocator<result_t> >&)::ltstr'
trafana.cpp|78| error: ISO C++ forbids declaration of `flow_keys' with no type
Wie mache ich das am besten und ist <map>?
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?
Ich denke ich werde so ca. 100000 - 1000000 werte vorhalten müssen.
Viele Grüße
Bastian
| < Previous | Next > |