Вы не можете вставить ключ (объект Thing) сам по себе - map::insert
(по крайней мере, на вашей карте) взять std::pair<Thing,int>
, чтобы вы вставили значение int
, индексированное по ключу Thing
.
Однако - мне кажется, что вы действительно хотите использовать std::set<Thing>
, поскольку у вашего объекта Thing есть своя собственная семантика упорядочения. Повторение инкапсулированного int val
в качестве значения в карте с ключом Thing
является избыточным и нарушает красивую инкапсуляцию, которую вы здесь имеете.
int main(int argc, char* argv[])
{
std::set<Thing> myset;
Thing t1(1);
Thing t2(10);
Thing t3(5);
std::pair<std::set<Thing>::iterator, bool> result = myset.insert(t1);
std::set<Thing>::iterator iter = myset.find(t1);
}