[stl, c++]

SCIF32

чего-то у меня дикий тупняк. бьюсь уже сутки с 20-ю строками кода:
В кратце: имеется мап множества пар на множество множеств
std::map<std::pair<VKey,VKey>*,set<EdgeVal>*, ltdi> E2
и хочется с ним работать --- записывать элементы и читать.
Проблема в том, что у меня проверяется наличие элемента в мапе, а если элемента нету, то он создается. НО!
бывает так, что этот элемент не создается, то есть прогой выдается "KAPAY/\", который выдаваться вроде не должен.
Что я не так делаю? вот код:

struct ltdi
{
bool operatorconst std::pair<VKey,VKey>* d1,const std::pair<VKey,VKey>* d2) const
{
printf("aaaaaaaaaa %d %d| %d %d = %d %d\n",d1,d2,d1->first,d1->second,d2->first,d2->second);
if d1->first==d2->first)&&(d1->second==d2->second {return 0;}
else if (d1->first<d2->first) {return -1;}
else if d1->first==d2->first)&&(d1->second<d2->second {return -1;}
else {return 1;}
}
};

for (Edges::iterator j=E.begin;j!=E.end;j++)
{
std::pair<VKey,VKey> p=std::make_pair(j->first,j->second.to);
if (E2.find(&p)==E2.end
{
std::pair<VKey,VKey>* a=new std::pair<VKey,VKey>(j->first,j->second.to);
std::set<EdgeVal>* b=new std::set<EdgeVal>;
E2[a]=b;
}
[b] if (E2.find(&p)==E2.end
printf("KAPAY/\\\n");[/b]
if (E2[&p]->find(j->second.label)==E2[&p]->end
{
E2[&p]->insert(j->second.label);
}
// else E.erase(t);
}

kamputer

>Что я не так делаю?
Если вкратце - всё.

ppplva

Посмотри внимательно на свой bool operator

freezer

интересно, почему он +1, -1 и 0 возвращает?

SCIF32


и вправду.

SCIF32

все?
че за флуд то такой. с каких пор стало пи*деть не поделу в этом разделе?
Оставить комментарий
Имя или ник:
Комментарий: