У меня есть набор пар целых чисел и наборов, например: items = {(2,{"A", "B", "C"}),(3,{"C"}),...}
Я настроил это так, потому что наборы stl можно легко заказать, написав компаратор для объявления, но я не знаю, как написать такую функцию, чтобы делать то, что мне нужно. Мне нужно распечатать в порядке убывания на основе целочисленного значения (первое значение пары), и если два элемента имеют целочисленное значение, то в алфавитном порядке по строке. В настоящее время он выводится в порядке возрастания по целочисленному значению и в алфавитном порядке по строке. Я приложу ожидаемые и текущие результаты ниже.
set<pair<int, set<string>>> outputSet;
map<set<string>, int> supportMap;
set<set<string>> candidateItemSets;
vector<set<set<string>>> frequentItemSets;
for(int i = 0; i < frequentItemSets.size(); i++){
for(auto it = frequentItemSets[i].begin(); it != frequentItemSets[i].end(); it++){
pair<int, set<string>> temp(supportMap[*it],*it);
outputSet.insert(temp);
}
}
for(auto it = outputSet.begin(); it != outputSet.end(); it++){
pair<int, set<string>> temp = *it;
auto sit = temp.second.begin();
auto end = temp.second.end();
advance(end, -1);
cout << temp.first << " [";
for(sit; sit != end; sit++)
cout << *sit << " ";
cout << *sit << "]" << endl;
/**
current output:
2 [A]
2 [A C]
2 [B]
2 [B C]
2 [B C D]
2 [B D]
2 [C D]
2 [D]
3 [C]
expected output:
3 [C]
2 [A]
2 [A C]
2 [B]
2 [B C]
2 [B C D]
2 [B D]
2 [C D]
2 [D]
**/
set
изitems
, но вместо этого ссылаетесь наoutputSet
, не используя при этомitems
. Это по ошибке? - person Tas   schedule 18.07.2017