C++ Address Book (2nd follow up)
This code is greatly improved!  Well done.  Still, there are some things that may help you improve your code.

Don't overspecify member functions

Within the Address_book.h file, the member functions are declared like this

void Address_book::resize(size_t entries);
void Address_book::sort();


But they should not include the class prefix in this context.  Instead, write them like this:

void resize(size_t entries);
void sort();


Be aware of signed vs. unsigned

Within the Address_book.cpp file, both functions include a line like this:

for (int i = 0; i &lt; abook.add_book.size(); ++i) {


However, size() often returns an unsigned number, so it would be prudent to make i unsigned as well.  I'd recommend std::size_t as in 

for (std::size_t i = 0; i &lt; abook.add_book.size(); ++i) {


Use const where practical

Usually, an extractor (operator &lt;&lt;) does not alter the underlying object.  This is true of your code as well, which is good.  But to make it explicit, declare the parameter as const.  That is, the friend function should be this instead:

std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const Address_book&amp; abook);


Avoid the use of this in member functions

The code current contains this function:

void Address_book::sort() {
    std::sort(this-&gt;add_book.begin(), this-&gt;add_book.end());
}


However, it's usually not a good idea to explictly write this unless you have to.  I'd recommend shortening to this:

void Address_book::sort() {
    std::sort(add_book.begin(), add_book.end());
}


Think of the user

It's not so convenient to count the addresses manually first and then enter them.  Why not have the computer count them?  One simple way to do that would be to have a blank line or end of file signal the end of the input, avoiding the need for the user to manually count addresses first.