65,187
社区成员




#include <vector>
#include <set>
#include <cstdio>
int numbers[10] = {1,2,3,2};
struct CMP{
bool operator() (std::vector<int>* const p1, std::vector<int>* const p2) const{
const std::vector<int> &v1 = *p1, &v2 = *p2;
bool flag = false;
for (int i = 0; i < v1.size() && !flag; ++i)
if (numbers[v1[i]] != numbers[v2[i]]) flag = true;
if (!flag) return false;
for (int i = 0; i < v1.size(); ++i)
if (v1[i] != v2[i]) return v1[i] < v2[i];
return false;
}
};
int main(){
std::vector<int> v1, v2, v3;
v1.push_back(1);
v2.push_back(2);
v3.push_back(3);
std::set<std::vector<int>*,CMP> set;
set.insert(&v1);
set.insert(&v2);
set.insert(&v3);
printf("%d\n", set.size());
return 0;
}
#include <vector>
#include <set>
#include <cstdio>
int numbers[10] = {1,2,3,2};
struct CMP{
bool operator() (std::vector<int>* const p1, std::vector<int>* const p2) const{
const std::vector<int> &v1 = *p1, &v2 = *p2;
bool flag = false;
for (int i = 0; i < v1.size() && !flag; ++i)
if (numbers[v1[i]] != numbers[v2[i]]) flag = true;
if (!flag) return false;
for (int i = 0; i < v1.size(); ++i)
if (v1[i] != v2[i]) return v1[i] < v2[i];
return false;
}
};
int main(){
std::vector<int> v1, v2, v3;
v1.push_back(1);
v2.push_back(2);
v3.push_back(3);
std::set<std::vector<int>*,CMP> set;
set.insert(&v1);
// set.insert(&v2);
set.insert(&v3);
printf("%d\n", set.size());
return 0;
}