fat interface?

気付くとこんな感じの I/F を書いてる

class Contents
{
  struct Content
  {
    // データメンバがいっぱいあるって事を言いたいわけです
    int d1_;
    float d2_;
    bool d3_;

    // (*1) で push_back を oneliner したいがために ctor を定義する
    Content(int d1, float d2, bool d3)
      : d1_(d1), d2_(d2), d3_(d3)
    {
    }
  };

  std::vector<Content>	contents_;

public:

  // この I/F が気に食わない
  void AddEntry(int d1, float d2, bool d3)
  {
    contents_.push_back(Content(d1, d2, d3)); // (*1)
  }
};

こんな事していると SetEntry とか RemoveEntry とか、そういう(引数一杯な)I/F を用意する羽目になるんだよな。
ぶっちゃけ

typedef std::vector<Content> Contents;

ってしておいて

pContents_->push_back(Content(d1, d2, d3));

でいいじゃないかと。struct Content をクライアントから隠す必要ないじゃないかと。ってか、隠す方がダメなんじゃないかと思うわです。
なにより

標準アルゴリズムがつかえねえ

という所が痛すぎ。

で、ちょっと話は替わって、上の話でいくと標準アルゴリズムに食わせたい場合は AddEntry は push_back としなきゃならないわけです。
bool を返すメソッドはすべからく Is ではじめるという Coding Style を採用したい場合は、IsEmpty と empty の2つを用意する必要になりませんかね?

boost とかに無いですかね? iterator_adaptor ならぬ container_adaptor なるものが...