在任意数据类型</algorithm>上使用<algorithm>库

时间:2011-06-09 14:03:41

标签: c++ c

早些时候我问过this question关于如何创建我自己的set操作类的问题,例如十字路口,工会等。

我选择的答案作为我的解决方案推荐已经实施了这些操作的algorithm library。我想让这些操作适用于我的数据类型:

struct my_data_type {
    int label;
    vector<string> x;
    vector<string> y;
    string str;
};

因此建议我将这些内容包含在我的struct(或类)中:

  • 公共副本构造函数。
  • 公共分配运营商。
  • 公共析构者。

我对C / C ++比较陌生,所以请问有人能为我提供这三个内容吗?那么如何使用我班上的一个操作(让我们说set_intersection(...)

谢谢。

1 个答案:

答案 0 :(得分:2)

在这种情况下,编译器提供了所有三种的合适实现 - 没有必要再写任何东西,这样做会很糟糕,恕我直言。但是,您可能需要的是一个构造函数,它接受参数,构造一个正确初始化的对象,以及一个operator&lt;()的实现,以便可以比较您的结构。

不知道你的结构是做什么的,很难提供这些,但假设你的成员会有独特的标签,这就是你需要的东西:

struct my_data_type {
    int label;
    vector<string> x;
    vector<string> y;
    string str;

    my_data_type( int l, const string & s ) : label( l ), str( s ) {}

    bool operator<( const my_data_type & t ) const {
          return label < t.label;
    }
};