一个通用的集合运算类,即交集、并集、减号等
A generic set operations class i.e. intersection, union, minus etc
我想写一个C++类,它提供对字符串的向量和我自己的数据类型的向量进行操作的集合。有没有什么简单的方法可以做到这一点,而不是为每种数据类型编写不同的函数?到目前为止,我已经编写了字符串向量的运算。下面显示了我的集合并集示例:
vector<string> SetOperations::set_union(vector<string> set1,
vector<string> set2) {
for(std::vector<int>::size_type i = 0; i < set1.size(); i++) {
set1.push_back(set2.at(i));
}
return set1;
}
所以我想要同样的东西,但其中string
是说my_data_type
,它是各种成员的结构。假设它看起来像这样:
struct my_data_type {
int label;
vector<string> x;
vector<string> y;
string str;
};
每个数据类型的函数也不会像我的set_union(...)
函数那样简单,因为在集交集的情况下,我肯定需要测试my_data_type
的每个成员的相等性?
此外,我对C++还很陌生,所以对我现有函数的任何评论都将不胜感激。
非常感谢。
其中一些已经存在,并且在算法标头中:
- 集合(_U)
- 设置差异
- set_intersection
- 集合对称差
这些都支持一个比较器函数,这样您就可以对所有自己的数据类型进行比较。或者如其他回复中所述,使您的容器符合STL要求。
请参阅:http://www.cplusplus.com/reference/algorithm/
已经有这样的算法(并集、交集、排序…):http://www.cplusplus.com/reference/algorithm/
您的元素只需满足STL容器元素的要求(请参阅http://msdn.microsoft.com/fr-fr/library/bb385469.aspx):
插入的所有引用类型into STL/CLR容器必须具有,位于至少包括以下元素:
公共副本构造函数。
公共分配运算符。
公共析构函数。
此外,关联容器例如set和map必须具有公共定义的比较运算符运算符<默认情况下。一些操作在容器上可能还需要公共默认构造函数和要成为的公共等价运算符定义
类似于引用类型、值类型和指向的引用类型的句柄插入关联容器必须有一个比较诸如运算符<定义对公共副本的要求构造函数,公共赋值运算符和公共析构函数do值类型或句柄不存在引用类型。
您可以在WikiBook上找到有关运算符重载(将在自定义类中实现)的信息:http://en.wikibooks.org/wiki/C++_编程/操作员/Operator_Overloading
- 布局兼容类型的并集
- 用C#中的并集模拟C++嵌套结构
- 在模拟器中使用并集来模拟CPU寄存器有多合适
- 提升几何体:C++并集多个多边形
- C++ 在可变参数模板的参数包中并集参数?
- 与位字段的并集为位字段成员提供了意外值
- pybind11:用可选数据表示并集
- 使用并集作为std::unordereded_map的密钥
- 使用嵌套结构初始化并集
- 给定一组正整数 <=k 及其 n 个子集,找到哪些子集对给出原始集合的并集
- 指向并集的指针的向量.如何正确访问联合的元素?
- C++:传递未知并集作为参数
- 如何在模板与并集之间进行继承?
- 并集 (C++) 中出现意外结果
- boost::icl::interval_map重叠并集
- 与特征数据类型并集
- 使用并集将双精度转换为十六进制再转换为双精度
- 使用并集的简单结构中的成员变量别名
- 快找并集运算——它和集合论中的并集一样吗
- 一个通用的集合运算类,即交集、并集、减号等