Few ideas
Code:
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
class name{
public:
name(const std::string& first = "",//constructor
const std::string& mid = "",
const std::string& last = ""):
lastName(last),firstName(first),middleIni(mid){}
bool operator==(const name& theName_)const{//comparison
return lastName == theName_.lastName &&
firstName == theName_.firstName &&
middleIni == theName_.middleIni;
}
private:
std::string lastName,//data
firstName,
middleIni;
friend std::ostream& operator<<(std::ostream& ,const name&);
};
std::ostream& operator<<(std::ostream& out,const name& myName){//to allow printing
out << myName.firstName << " " << myName.middleIni << " ";
out << myName.lastName;
return out;
}
int main(void)
{
std::vector<name> vec;
vec.push_back(name("Joe","G","Bloggs"));
vec.push_back(name("Frank","D","Drebbin"));
vec.push_back(name("John","A","Smith"));
vec.push_back(name("Tom","P","Jones"));
vec.push_back(name("Ed","D","Wood"));
std::copy(vec.begin(),vec.end(),//print vector
std::ostream_iterator<name>(std::cout, "\n"));
std::cout << vec.size() << " elements in vector" << std::endl;
std::cout << std::endl << "Delete \"Jim P Duggan\"" << std::endl;
vec.erase(std::remove(vec.begin(),vec.end(),
name("Jim","P","Duggan")),vec.end());
std::copy(vec.begin(),vec.end(),//print vector
std::ostream_iterator<name>(std::cout, "\n"));
std::cout << vec.size() << " elements in vector" << std::endl;
std::cout << std::endl << "Delete \"Tom P Jones\"" << std::endl;
vec.erase(std::remove(vec.begin(),vec.end(),
name("Tom", "P", "Jones")),vec.end());;
std::copy(vec.begin(),vec.end(),
std::ostream_iterator<name>(std::cout, "\n"));
std::cout << vec.size() << " elements in vector" << std::endl;
}