Я согласен с ответом от zacherates.
Но вы можете сделать вызов intern () в ваших нелиберальных строках.
Из примера zacherates:
// ... but they are not the same object
new String("test") == "test" ==> false
Если вы ставите нелитеральное равенство строки, это правда
new String("test").intern() == "test" ==> true
Похоже, ваша проблема в том, что ваша функция eraseFromVec
имеет квалификатор const
. Но он вызывает функцию erase
из std::vector
, которая не является константой. Просто удалите константный квалификатор, и он должен работать нормально.