#include <iostream>
#include <string>
#include <tuple>
#include <set>
using namespace std;
class ScannedFile
{
public:
std::wstring old_name{ L"" };
mutable std::wstring new_name{ L"" };
mutable bool is_fv{ true };
ScannedFile() {}
ScannedFile(const std::wstring &old_n, const std::wstring &new_n, const std::string &ext) :
old_name(old_n), new_name(new_n), extension(ext)
{
if(new_n.empty())
this->SetDefaultNewName();
}
ScannedFile(const std::wstring &old_n, const std::wstring &new_n) :
old_name(old_n), new_name(new_n)
{
if (new_n.empty())
this->SetDefaultNewName();
this->extension = "";
}
// ...
void SetDefaultNewName() const
{
this->new_name = L"pusta_nazwa" + std::to_wstring(counter++);
}
bool operator<(const ScannedFile &f) const
{
return std::tie(this->old_name, this->new_name) < std::tie(f.old_name, f.new_name);
}
private:
static int counter;
std::string extension;
};
int ScannedFile::counter = 0;
int main() {
auto files = set<ScannedFile> {ScannedFile(L"001", L""), ScannedFile(L"002", L"")};
if(!files.insert(ScannedFile(L"001", L"")).second)
cout << "not inserted" << endl;
else
cout << "insertion succedded" << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dHVwbGU+CiNpbmNsdWRlIDxzZXQ+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBTY2FubmVkRmlsZSAKewoKcHVibGljOgoJc3RkOjp3c3RyaW5nIG9sZF9uYW1leyBMIiIgfTsKCW11dGFibGUgc3RkOjp3c3RyaW5nIG5ld19uYW1leyBMIiIgfTsKCW11dGFibGUgYm9vbCBpc19mdnsgdHJ1ZSB9OwoKCVNjYW5uZWRGaWxlKCkge30KCglTY2FubmVkRmlsZShjb25zdCBzdGQ6OndzdHJpbmcgJm9sZF9uLCBjb25zdCBzdGQ6OndzdHJpbmcgJm5ld19uLCBjb25zdCBzdGQ6OnN0cmluZyAmZXh0KSA6CgkJb2xkX25hbWUob2xkX24pLCBuZXdfbmFtZShuZXdfbiksIGV4dGVuc2lvbihleHQpIAoJewoJCWlmKG5ld19uLmVtcHR5KCkpCgkJCXRoaXMtPlNldERlZmF1bHROZXdOYW1lKCk7Cgl9CgoJU2Nhbm5lZEZpbGUoY29uc3Qgc3RkOjp3c3RyaW5nICZvbGRfbiwgY29uc3Qgc3RkOjp3c3RyaW5nICZuZXdfbikgOgoJCW9sZF9uYW1lKG9sZF9uKSwgbmV3X25hbWUobmV3X24pCgl7CgkJaWYgKG5ld19uLmVtcHR5KCkpCgkJCXRoaXMtPlNldERlZmF1bHROZXdOYW1lKCk7CgkJdGhpcy0+ZXh0ZW5zaW9uID0gIiI7Cgl9CgkKCS8vIC4uLgoKCXZvaWQgU2V0RGVmYXVsdE5ld05hbWUoKSBjb25zdAoJewoJCXRoaXMtPm5ld19uYW1lID0gTCJwdXN0YV9uYXp3YSIgKyBzdGQ6OnRvX3dzdHJpbmcoY291bnRlcisrKTsKCX0KCglib29sIG9wZXJhdG9yPChjb25zdCBTY2FubmVkRmlsZSAmZikgY29uc3QgCgl7CgkJcmV0dXJuIHN0ZDo6dGllKHRoaXMtPm9sZF9uYW1lLCB0aGlzLT5uZXdfbmFtZSkgPCBzdGQ6OnRpZShmLm9sZF9uYW1lLCBmLm5ld19uYW1lKTsKCX0KCnByaXZhdGU6CglzdGF0aWMgaW50IGNvdW50ZXI7CglzdGQ6OnN0cmluZyBleHRlbnNpb247Cn07CgppbnQgU2Nhbm5lZEZpbGU6OmNvdW50ZXIgPSAwOwoKaW50IG1haW4oKSB7CglhdXRvIGZpbGVzID0gc2V0PFNjYW5uZWRGaWxlPiB7U2Nhbm5lZEZpbGUoTCIwMDEiLCBMIiIpLCBTY2FubmVkRmlsZShMIjAwMiIsIEwiIil9OwoJCglpZighZmlsZXMuaW5zZXJ0KFNjYW5uZWRGaWxlKEwiMDAxIiwgTCIiKSkuc2Vjb25kKQoJCWNvdXQgPDwgIm5vdCBpbnNlcnRlZCIgPDwgZW5kbDsKCWVsc2UKCQljb3V0IDw8ICJpbnNlcnRpb24gc3VjY2VkZGVkIiA8PCBlbmRsOwoJCglyZXR1cm4gMDsKfQ==