1

Visual C ++を使用してネットワーク侵入検知システムを構築しています。そのコンポーネントの1つは、ネットワーク全体のtcpセッションマネージャーです。tcpセッションデータは、他のスレッドからアクセスできるように、並行ベクターに格納されます。セッションが閉じられたら、並行ベクターからセッションを削除する簡単な方法がないことがわかりました。だから私の質問は、並行ベクトルからアイテムを削除するためにあなたが知っている最も賢い方法は何ですか。

スマート==パフォーマンスにあまり影響を与えずにプログラミングするのはかなり簡単ですありがとうございます

4

1 に答える 1

1

std::setここではベクトルの代わりに aを使用することを検討します - 特に格納されているアイテムの数が多い場合。ルックアップも頻繁に実行したいと思うでしょう。

セットからの検索と削除は、-O(log(n))よりも複雑です。O(n)std::vectorO(1)O(log(n))

これらすべての操作を保護するためにミューテックスも必要になります。

于 2012-08-06T22:12:22.373 に答える