Private inheritance gives you access to the public and protected methods of the base class, just like public inheritance. The difference is that the methods are private to your class. Similarly for protected inheritance. You get the public and protected methods of the base class, and they are all protected in your class.
Private inheritance allows you to implement a class in terms of another class and is not that dissimilar from having a private data member of that class. In this sense, a class that inherits privately or "protectedly" from another has a "has-a" relationship with it, as opposed to the "is-a" relationship of public inheritance. This means for instance that the Liskov substitution principle does not apply.
Now, in your particular example, inheriting from standard library containers is considered poor form, but note that most of the arguments apply to public inheritance.
class Foo
{
void privateFoo() const {}
public:
void foo() const {}
};
class Bar : Foo // class inheritance is private by default
{
public:
void bar() const {
foo(); // OK, foo() is a private method of Bar.
privateFoo(); // Error! privateFoo() is private to Foo.
}
};
int main()
{
Foo f;
f.foo(); // OK
Bar b;
b.bar(); // OK, calls foo() internally
b.foo(); // Error! foo() is private in Bar.
}