ALL,
I have a following structure
struct Definition
{
std::string schema, name;
Definition(const std::string &s, const std::string n) : schema(s), name(n) {}
}
and I have a following class
class Foo
{
public:
Foo()
{
myVector.push_back( "abc", "def" );
myVector.push_back( "abc", "ghi" );
myVector.push_back( "abc", "jkl" );
}
void EditVector();
private:
std::vector<Definition> myVector;
};
void Foo::EditVector()
{
for( auto i = 0; i < somedata.size(); ++i )
{
// if somedata[i] is not found inside mtVector name - add it
// if somedata.size() is less than myVector - remove the extra element
}
}
Now adding the element not found is easy - just do find_if() and if it returns myVector.end() - call push_back().
But what about removing?
I thought I can save myVector to a temporary one, then remove the element from that temporary and finally remove elements from myVector that are left inside the temporary one. But how do I do that? Or maybe there is a better and more elegant solution?
The somedata is a dynamic vector and its content is not known at the time.
TIA!!
I did see the answer here but it uses simple/basic type. And maybe there is even more elegant soltion
Aucun commentaire:
Enregistrer un commentaire