Just a detail, but this leaks a LogEntry.  I'd change the declaration to `vector<Entries::iterator> dead_outputs;` and use
```C++
  for (size_t i = 0; i < dead_outputs.size(); ++i) {
    LogEntry* entry = dead_outputs[i]->second;
    entries_.erase(dead_outputs[i]);
    delete entry;
  }
```