求教为什么输出是3
#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;}