【发布时间】:2017-07-18 03:19:52
【问题描述】:
我有一组整数和集合对,例如:
项目 = {(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]
**/
【问题讨论】:
-
您声明了
items的set,但引用了outputSet,而不是使用items。这是错误的吗? -
谢谢,我修正了错误
-
你试过写比较函数吗?向我们展示您的尝试。
标签: c++ stl comparator std-pair stdset