These two are not equivalent. You use std::back_inserter , for example, when you need to pass an input iterator to an algorithm. std::vector<std::string>::push_back will not be an option in this case. for instance
std::vector<std::string> a(100, "Hello, World"); std::vector<std::string> b; std::copy(a.begin(), a.end(), std::back_inserter(b));
source share