std::list<Reader> readers;
readers.push_back(Reader());
Reader& r = *(readers.begin());
/* at this point, the exact place in list, where the reader was picked out, is forgotten.
Only 'r' shows which element of the list it is. */
readers.erase(r); //<---how to do this?
客户机从管理器/分派器获取新实例的“读取器”对象。如果“每个人都感兴趣”通过观察所分派的读者群来捡起它,那么经理会维护一个被分派的内部列表,并使缓存的数据无效/释放。通过引用从std :: list中删除元素
当客户端不再对数据感兴趣时,它应该将读取器返回给管理器以从池中移除。但我不希望客户保留一个迭代器 - 它对经理和读者群的胆量绝对不感兴趣;只需要这个自己的读者,而不是指向它的迭代器。因此,对于删除,它会调用管理器的清除功能,并引用该单个阅读器。
是否有更好的方法从列表中删除该阅读器,而不是遍历整个列表以搜索参考导致的那个阅读器?
是t hese'读者'唯一(没有'读者'具有相同的值)? – NathanOliver
@NathanOliver:是的。每个客户端都有一个独特的阅读器,通过方法从缓存中选择数据(并将其标记为“已被此用户使用”),如果所有感兴趣的用户都“用完了”,那么经理会使数据无效。 –
'readers.remove(r);'应该工作(如果'r'是唯一的),但会内部迭代列表。 –