In general, instead of walking the vector's content "manually" and selectively erase its items, I'd suggest using STL's already-built algorithms, combining them properly.
Using the Erase-Remove Idiom
In particular, to erase items satisfying some property from a std::vector, you can consider using the erase-remove idiom.
This Q&A on Stackoverflow discusses some options to erase items from STL containers, including the std::vector case.
You can find commented compilable code below, live here:
#include <algorithm>    // for std::remove_if()
#include <iostream>     // for std::cout, std::endl
#include <string>       // for std::string
#include <vector>       // for std::vector
using namespace std;
void print(const char* name, const vector<string>& v);
int main() 
{
    // Input vectors
    vector<string> a = {"the", "of"};
    vector<string> b = {"oranges", "the", "of", "apples"};
    print("a", a);
    print("b", b);
    // Use the erase-remove idiom
    a.erase(
        remove_if(
            a.begin(), 
            a.end(), 
            // This lambda returns true if current string 's'
            // (from vector 'a') is in vector 'b'. 
            [&b](const string& s) 
            {
                auto it = find(b.begin(), b.end(), s);
                return (it != b.end());
            }
        ), 
        a.end()
    );
    cout << "\nAfter removing:\n";
    print("a", a);
}
void print(const char* name, const vector<string>& v) 
{
    cout << name << " = {";
    bool first = true;
    for (const auto& s : v) 
    {
        if (first) 
        {
            first = false;
            cout << s;
        } 
        else 
        {
            cout << ", " << s;
        }
    }
    cout << "}" << endl;
}
Output:
a = {the, of}
b = {oranges, the, of, apples}
After removing:
a = {}
PS
Note also this very similar question on Stackoverflow.
Using std::set_difference()
An alternative approach can be to use std::set_difference(), e.g. something like the following code, live here.
(Note that in this case, as per set_difference() prerequisite, the input vectors must be already sorted.)
#include <algorithm>    // for std::set_difference(), std::sort()
#include <iostream>     // for std::cout, std::endl
#include <iterator>     // for std::inserter
#include <string>       // for std::string
#include <vector>       // for std::vector
using namespace std;
void print(const char* name, const vector<string>& v);
int main() 
{
    // Input vectors
    vector<string> a = {"the", "of"};
    vector<string> b = {"oranges", "the", "of", "apples"};
    print("a", a);
    print("b", b);
    // Sort the vectors before calling std::set_difference().
    sort(a.begin(), a.end());
    sort(b.begin(), b.end());
    // Resulting difference vector
    vector<string> c;
    set_difference(a.begin(), a.end(),
                   b.begin(), b.end(),
                   inserter(c, c.begin()));
    print("difference(a,b)", c);
}
void print(const char* name, const vector<string>& v) 
{
    cout << name << " = {";
    bool first = true;
    for (const auto& s : v) 
    {
        if (first) 
        {
            first = false;
            cout << s;
        } 
        else 
        {
            cout << ", " << s;
        }
    }
    cout << "}" << endl;
}