#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
class Module
{
private:
std::string code;
std::string name ;
std::string lect ;
int cwWeight ;
double exMark = 0.0; //initialised as 0
public:
Module(const std::string& id, const std::string& title,
const std::string& lecturer, const int courseworkWeight)
:code(id), name(title),
lect(lecturer), cwWeight(courseworkWeight)
{
// other things
}
~Module(){ std::cout << code << " Deleted..\n"; }
// getters for id
std::string getId()const { return code; }
// setter for exMark
void setExMark(const double newMark) { exMark = newMark; }
void print()const
{
std::cout << code << " " << name << " " << lect << " "
<< " exMark: " << exMark << std::endl;
}
};
int main()
{
std::vector<Module*> moduleVector
{
new Module("one", "title 1", "lecture 1", 1),
new Module("two", "title 2", "lecture 2", 2),
new Module("three", "title 3", "lecture 3", 3)
};
// id from file which has to be compared
std::string idFromFile = "two";
// condition
auto Condition = [&idFromFile](Module* element){ return element->getId() == idFromFile; };
auto iter = std::find_if(moduleVector.begin(), moduleVector.end(), Condition);
// if there is a match
if(iter != moduleVector.end())
(*iter)->setExMark(10.0); // set the exMark
// ^^^^^^^^^
// to print
for(const Module* it: moduleVector)
it->print();
for( Module* it: moduleVector) // delete
{
delete it;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKY2xhc3MgTW9kdWxlCnsKcHJpdmF0ZToKICAgc3RkOjpzdHJpbmcgY29kZTsKICAgc3RkOjpzdHJpbmcgbmFtZSA7CiAgIHN0ZDo6c3RyaW5nIGxlY3QgOwogICBpbnQgY3dXZWlnaHQgOwogICBkb3VibGUgZXhNYXJrID0gMC4wOyAvL2luaXRpYWxpc2VkIGFzIDAKcHVibGljOgogICBNb2R1bGUoY29uc3Qgc3RkOjpzdHJpbmcmIGlkLCBjb25zdCBzdGQ6OnN0cmluZyYgdGl0bGUsCiAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbGVjdHVyZXIsIGNvbnN0IGludCBjb3Vyc2V3b3JrV2VpZ2h0KQogICAgICA6Y29kZShpZCksIG5hbWUodGl0bGUpLAogICAgICBsZWN0KGxlY3R1cmVyKSwgY3dXZWlnaHQoY291cnNld29ya1dlaWdodCkKICAgewogICAgICAvLyBvdGhlciB0aGluZ3MKICAgfQogICB+TW9kdWxlKCl7IHN0ZDo6Y291dCA8PCBjb2RlIDw8ICIgRGVsZXRlZC4uXG4iOyB9CiAgIC8vIGdldHRlcnMgZm9yIGlkCiAgIHN0ZDo6c3RyaW5nIGdldElkKCljb25zdCB7IHJldHVybiBjb2RlOyB9CiAgIC8vIHNldHRlciBmb3IgZXhNYXJrCiAgIHZvaWQgc2V0RXhNYXJrKGNvbnN0IGRvdWJsZSBuZXdNYXJrKSB7IGV4TWFyayA9IG5ld01hcms7IH0KICAgdm9pZCBwcmludCgpY29uc3QKICAgewogICAgICBzdGQ6OmNvdXQgPDwgY29kZSA8PCAiICIgPDwgbmFtZSA8PCAiICIgPDwgbGVjdCA8PCAiICIKICAgICAgICAgPDwgIiBleE1hcms6ICIgPDwgZXhNYXJrIDw8IHN0ZDo6ZW5kbDsKICAgfQp9OwoKCmludCBtYWluKCkKewogICBzdGQ6OnZlY3RvcjxNb2R1bGUqPiBtb2R1bGVWZWN0b3IKICAgewogICAgICBuZXcgTW9kdWxlKCJvbmUiLCAidGl0bGUgMSIsICJsZWN0dXJlIDEiLCAxKSwKICAgICAgbmV3IE1vZHVsZSgidHdvIiwgInRpdGxlIDIiLCAibGVjdHVyZSAyIiwgMiksCiAgICAgIG5ldyBNb2R1bGUoInRocmVlIiwgInRpdGxlIDMiLCAibGVjdHVyZSAzIiwgMykKICAgfTsKICAgLy8gaWQgZnJvbSBmaWxlIHdoaWNoIGhhcyB0byBiZSBjb21wYXJlZAogICBzdGQ6OnN0cmluZyBpZEZyb21GaWxlID0gInR3byI7CiAgIC8vIGNvbmRpdGlvbgogICBhdXRvIENvbmRpdGlvbiA9IFsmaWRGcm9tRmlsZV0oTW9kdWxlKiBlbGVtZW50KXsgcmV0dXJuIGVsZW1lbnQtPmdldElkKCkgPT0gaWRGcm9tRmlsZTsgfTsKICAgYXV0byBpdGVyID0gc3RkOjpmaW5kX2lmKG1vZHVsZVZlY3Rvci5iZWdpbigpLCBtb2R1bGVWZWN0b3IuZW5kKCksIENvbmRpdGlvbik7CiAgIC8vIGlmIHRoZXJlIGlzIGEgbWF0Y2gKICAgaWYoaXRlciAhPSBtb2R1bGVWZWN0b3IuZW5kKCkpCiAgICAgICgqaXRlciktPnNldEV4TWFyaygxMC4wKTsgIC8vIHNldCB0aGUgZXhNYXJrCiAgIC8vIF5eXl5eXl5eXgogICAvLyB0byBwcmludAogICBmb3IoY29uc3QgTW9kdWxlKiBpdDogbW9kdWxlVmVjdG9yKQogICAgICBpdC0+cHJpbnQoKTsKCiAgIGZvciggTW9kdWxlKiBpdDogbW9kdWxlVmVjdG9yKSAvLyBkZWxldGUgCiAgIHsKICAgICAgZGVsZXRlIGl0OwogICB9CglyZXR1cm4gMDsKfQo=