首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求教为何输出是3

2012-11-08 
求教为什么输出是3C/C++ code#include vector#include set#include cstdioint numbers[10] {1,2,3

求教为什么输出是3

C/C++ code
#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;}


g++ 4.7.1编译。为什么输出是3不是2呢?

[解决办法]
set的比较函数,是要定义出严格弱序来。你这写得比较复杂……

热点排行