在任意数据类型上使用库

之前我问过这个问题 ,关于如何建立我自己的集合操作类,例如交集,联合等。

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

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

所以有人建议我把这些东西包含在我的struct(或类)中:

  • 公共拷贝构造函数。
  • 公共任务运营商。
  • 公共析构函数。

我对C / C ++比较陌生,所以有人可以为我在这里定义的示例结构提供这三个东西吗? 那么如何使用我class上的一个操作(让我们说set_intersection(...)

谢谢。

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

在不知道你的结构是什么的情况下,很难提供这些,但假设你的集合成员将拥有独特的标签,这就是你需要的东西:

 struct my_data_type { int label; vector x; vector 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; } };