<algorithm> 对任意数据类型使用库

Using the <algorithm> library on arbitrary data types

本文关键字:数据类型 lt algorithm gt 任意      更新时间:2023-10-16

早些时候我问了这个问题,这个问题是关于如何创建自己的集合运算类,例如交集、并集等。

我选择的答案作为我的解决方案,推荐了已经实现了这些操作的算法库。我想让这些操作对我的数据类型起作用,比如:

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

因此有人建议我在结构(或类)中包含以下内容:

  • 公共副本构造函数
  • 公共分配运算符
  • 公共析构函数

我对C/C++还比较陌生,所以有人能为我在这里定义的示例结构提供这三件事吗?然后还有如何在我的类上使用其中一个操作(比如set_intersection(...)

谢谢。

在这种情况下,编译器提供了这三种方法的合适实现-不需要写任何额外的东西,这样做会很糟糕,IMHO。然而,您可能需要的是一个接受参数的构造函数,以构造一个正确初始化的对象,以及运算符<(),以便对您的结构进行比较。

如果不知道你的结构做什么,很难提供这些,但假设你的集合成员有唯一的标签,你需要这样的东西:

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;
    }
};